I'm trying to debug a portion of code for an assignment (I'm still very new to Java) and have combed through many resources to solve this conflict but still can't quite work it out.
public static void main(String [] args){
Scanner keyboard = new Scanner(System.in);
String input = null;
do
{
System.out.println("Enter 'A' for option A or 'B' for option B.");
String input = keyboard.next();
input.toLowerCase();
input.charAt(0);
}
while ((input != "a") || (input != "b"));
}
I always get a Duplicate Local Variable error with the input String.
Any help would be greatly appreciated!
replace
String input = keyboard.next();
with
input = keyboard.next();
If you put a String
before the variable name it is a declaration. And you can declare a variable name only once in a scope.
You have declared the input
variable twice. You will need to change this line:
String input = keyboard.next();
to this:
input = keyboard.next();
Also, this code will most likely not work:
((input != "a") || (input != "b"))
In Java, Strings are compared using the .equals()
method, so this line:
((input != "a") || (input != "b"))
needs to be changed to this:
((!input.equals("a")) || (!input.equals("b")))
Yoy've duplicated String input
declaration. Once is enough.
public static void main(String [] args){
Scanner keyboard = new Scanner(System.in);
String input = null;
do
{
System.out.println("Enter 'A' for option A or 'B' for option B.");
input = keyboard.next();
input.toLowerCase();
input.charAt(0);
}
while ((input != "a") || (input != "b"));
}
The problem is you are declaring input inside do{}
again.
So it should just be
input=keyboard.next();
As far as I know, this is not how you hide the variables.
Here is what I mean
private static String input = null;
public static void main(String [] args){
Scanner keyboard = new Scanner(System.in);
do
{
System.out.println("Enter 'A' for option A or 'B' for option B.");
String input = keyboard.next();
input.toLowerCase();
input.charAt(0);
}
while ((input != "a") || (input != "b"));
}
You have declared the input
variable twice . Inside the main
method declare input
only once. Use the following code inside do {}
:
input = keyboard.next(); instead of String input = keyboard.next();