Wednesday, 11 October 2017

Why does this code taking input of string and outputting an int not work? Java

itemprop="text">












I
thought this would be a neat way of structuring a picker method but the output is not
going to the first two if statements and only outputs the
last



 public int
myPickerMethod(){

System.out.println("please select from the
options ");
System.out.println("please select 1 for option 1 ");

System.out.println("please select 2 please select 2 for option 2");
String
input = keyboard.readLine();
System.out.println("input = " + input);



if(input=="1"){

return
1;
}
else if(input=="2"){
return 2;

}
else{
return 42;
}


}


Here is my result
from the terminal:



 please select
from the options
please select 1 for option 1
please select 2
please select 2 for option 2
1
input = 1


response = 42


Same
goes if I put 2 in. the "response" print statement is the output from the method from a
print statement in the main class.



I have not
tried this way before but I figured it should work. I don't really get why it isn't.
Anyone able to clear this up? Thanks


class="post-text" itemprop="text">
class="normal">Answer



For
testing Object (non-primitive type) equality, use
Object.equals().



if(input.equals("1"))
{


return
1;
}


The
== operator checks whether the references to the objects are
equal. A test for reference equality is done within the String.equals()
method
, among other checks. Below is the Java source for the
String.equals()
method:



public boolean
equals(Object anObject) {
if (this == anObject) { // Reference
equality
return true;

}
if (anObject
instanceof String) {
String anotherString = (String)anObject;
int
n = count;
if (n == anotherString.count) { // Are the strings the same
size?
char v1[] = value;
char v2[] =
anotherString.value;
int i = offset;
int j =
anotherString.offset;
while (n-- != 0) {

if (v1[i++] !=
v2[j++]) // Compare each character
return false;
}

return true;
}
}
return
false;
}


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print ...