Сравнение строк в Java, снова - PullRequest
3 голосов
/ 02 января 2012

Вопрос новичка, но у меня есть этот код:

import java.util.*;
import java.io.*;

public class Welcome1  
{
   // main method begins execution of Java application
   public static void main( String[] args )
   {
      String confirm = "y";
      while(confirm=="y")
      {
         System.out.println( "Welcome to Java Programming!" );
         System.out.println( "Print Again? (y/n)" );
         Scanner input = new Scanner(System.in);
         confirm = input.nextLine();
      }
   }
}

Мне просто нужно снова напечатать приветственное сообщение, когда пользователь вводит «y», когда его спрашивают. Но это не работает. Есть идеи?

Ответы [ 4 ]

11 голосов
/ 02 января 2012

В Java примитивные типы (int, long, boolean и т. Д.) Сравниваются на равенство с использованием ==, тогда как типы объектов (String и т. Д.) Сравниваются на равенство с использованием метода equals().Если вы сравниваете два типа объектов, используя ==, вы проверяете идентичность , а не равенство, то есть вы будете проверять, имеют ли два объекта одинаковую ссылку в памяти (и, следовательно,тот же объект);и вообще, вам просто нужно проверить, совпадают ли их значения , и для этого вы используете equals().

. В качестве хорошей практики программирования лучше сравнивать строки типаэто, переворачивая порядок строк:

while ("y".equals(confirm)) {

Таким образом, вы можете быть уверены, что сравнение будет работать, даже если confirm было нулевым, избегая потенциального NullPointerException.

6 голосов
/ 02 января 2012

Для сравнения строк используйте .equals ().

while(confirm.equals("y")){
5 голосов
/ 02 января 2012

Вы должны использовать равно () вместо оператора ==.

оператор == проверяет, являются ли два объекта фактически одинаковыми объектами, в то время как вы хотите проверить, равны ли они.

код привязки:

while(confirm.equals("y")) {
1 голос
/ 02 января 2012

Перепишите ваш код следующим образом (только пример):

import java.util.*;
import java.io.*;

public class Welcome1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String confirm = "y";

        do {
            System.out.println("Welcome to Java Programming!");
            System.out.println("Print Again? (y/n)");
            confirm = input.nextLine();
        }
        while (confirm.equalsIgnoreCase("y"));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...