While loop in Java, string comparison does not work [duplicate] - java

This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
How do I compare strings in Java?
I'm working on a small program that asks for your name using a Scanner. If you enter blankstring, then I would like the console to display a message.
Here's what I tried doing:
import java.util.Scanner;
public class Adventure
{
public static void main(String[] args)
{
Scanner myScan = new Scanner (System.in);
System.out.println("What's your name?");
String name = myScan.nextLine();
while (!(name == "")) //Always returns false.
{
System.out.println("That's not your name. Please try again.");
name = myScan.nextLine();
}
System.out.println("It's a pleasure to meet you, " + name + ".");
}
}
The code never enters the while loop. Why?

Change your condition to:
while(!name.equals("")) {
or as suggested below by m0skit0:
while(!name.isEmpty()) {
See also
why equals() method when we have == operator?

Related

Searching element in String array in JAVA? [duplicate]

This question already has answers here:
How do I compare strings in Java?
(23 answers)
Closed 4 years ago.
I have made a JAVA program where I have initialized a 1-D String array. I have used for loop to search any inputted String if it exists in the array(Scanner Class).
Here is the source code :-
import java.util.*;
class search
{
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
System.out.println("Enter the name to search :-");
String s=sc.nextLine();
String array[]={"Roger","John","Ford","Randy","Bacon","Francis"};
int flag=0,i;
for(i=0;i<6;i++)
{
if(s==array[i])
{
flag=1;
break;
}
}
if(flag==1)
System.out.println("The name "+s+" Exists");
else
System.out.println("The name "+s+" does not Exists");
}
}
The class even compiles successfully, but when I enter a valid string(say- Roger), the output is The name Roger does not Exists.
Please help me out with this issue, and for this I shall be grateful to you.
Thanking You,
J.K. Jha,
01.09.2018.
You are confusing == and equals
Since String is an object == just checks for if the references are same instead of actual contents
You should use String.equals() instead
Changes your if condition
for(i=0;i<6;i++)
{
if(s.equals(array[i]))
{
flag=1;
break;
}
}

Beginner here - java IF ELSE used with text [duplicate]

This question already has answers here:
How do I compare strings in Java?
(23 answers)
How can I read input from the console using the Scanner class in Java?
(17 answers)
Closed 5 years ago.
I just started reading about JAVA and I want to make a little program that when using Scanner is I type "yes", "no" or just something random I will get different messages.The problem if with the lines:
if (LEAVE == "yes") {
System.out.println("ok, lets go");
if (LEAVE == "no") {
System.out.println("you dont have a choice");
} else {
System.out.println("it's a yes or no question");
I receive the error : Operator "==" cannot be applied to "java.util.scanner", "java.lang.String". I saw on a site that it would be better if I replaced "==" with .equals,but I still get an error..
Help please :S
Code below:
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner LEAVE = new Scanner(System.in);
System.out.println("do you want to answer this test?");
LEAVE.next();
System.out.println("first q: would you leave the hotel?");
LEAVE.next();
if (LEAVE == "yes") {
System.out.println("ok, lets go");
}
LEAVE.nextLine();
if (LEAVE == "no") {
System.out.println("you dont have a choice");
LEAVE.nextLine();
} else {
System.out.println("it's a yes or no question");
}
}}
Scanner LEAVE = new Scanner(System.in);
Implies that LEAVE is Scanner class object. Right.
if (LEAVE == "yes")
You are comparing the Scanner type object with String type object and hence you are getting
Operator "==" cannot be applied to "java.util.scanner", "java.lang.String"
Now consider
LEAVE.next();
you are calling next() which belongs to LEAVE object. That next function is suppose to read a value and return that to you. So what you do is receive this value in another String type object and then further compare it to 'YES' or 'NO' or whatever.
String response = LEAVE.next()
if(response.equalsIgnoreCase("yes")){
// do something
}else if(response.equalsIgnoreCase("no")){
// do something else
}
More about Scanner class
GeeksForGeeks

i keep getting the good bye response no matter if i input yes or no, how would i change that so responses are correct [duplicate]

This question already has answers here:
How do I compare strings in Java?
(23 answers)
Closed 5 years ago.
I keep getting the 'good bye' response no matter what I enter, 'yes' or 'no'. How would I change that so responses are correct.
import java.util.Scanner;
public class SimpleQuiz1 {
public static void main(String[] args){
Scanner userInputScanner = new Scanner (System.in);
System.out.println("Are you ready to take this NBA quiz?");
String answer = userInputScanner.nextLine();
if(
answer == ("yes")){
System.out.println("Then lets get started!!!");
} else{
answer = ("no");
System.out.println("Goodbye, come again soon!");
}
}
}
Use String.equals(Object obj) rather than == as "==" will check for reference equality whereas .equals compares only the content not the reference.
Scanner userInputScanner = new Scanner(System.in);
System.out.println("Are you ready to take this NBA quiz?");
String answer = userInputScanner.nextLine();
if (answer.equals("yes")) {
System.out.println("Then lets get started!!!");
} else {
this should work fine.

Comparing console input from executable jar [duplicate]

This question already has answers here:
How do I compare strings in Java?
(23 answers)
Closed 7 years ago.
So I have this executable jar file with a username and password and runs but value doesn't ever continue correctly.
Here is an example:
public static void main(String[] args) {
System.out.println("Hello. I am a program created by Moocow9m. What is your name?");
InputStream stream = System.in;
Scanner scanner = new Scanner(stream);
String input = scanner.next();
if (input == "armystich"){
System.out.println("Welcome CODE NAME: ArmyStich!");
scanner.close();
}
else {
System.out.println("Hello " + input + ". Nice to meet you.");
scanner.close();
}
}
}
All would work except it would always return to else. Please help.
if (input == "armystich"){
The above checks reference equality. To check for value equality, using the equals method
if ( input.equals("armystich") ){
See How do I compare strings in Java?

Java String not working, printing different names [duplicate]

This question already has answers here:
How do I compare strings in Java?
(23 answers)
Closed 9 years ago.
So I wrote up a code that will make the user enter the name "Jack" but if he enters any other name it will say "That is not your name!" but i'm having trouble to make it do that. For example when I enter that name "Jack" It will say "That is not your name!" and when I enter a name like Joey for example it will say the same thing.
import java.util.Scanner;
public class WhoAreYou
{
public static void main(String[] args){
Scanner user_input = new Scanner(System.in);
String vYourName, vNotYourName;
System.out.print("Enter your name here: ");
vYourName = user_input.next();
/*
String vNotYourName;
System.out.print("Enter your name here: ");
vNotYourName = user_input.next();
*/
if(vYourName == "Jack")
System.out.println("Your name is: "+vYourName);
else{
vNotYourName = " ";
System.out.println("Thats not your name!");
}
}
}
Instead if using two Strings I tried to use one and that didn't work. Any ideas?
use .equals() when comparing strings:
if(vYourName.equals("Jack"))
System.out.println("Your name is: "+vYourName);
else{
"".equals(vYourName);
System.out.println("Thats not your name!");
}
instead of:
if(vYourName == "Jack")
use this:
if(vYourName.equals("Jack"))

Categories