2012-06-01 4 views
0

Эта программа позволяет пользователю вводить номер и проверяет, является ли число простым. Однако, если хотите, чтобы программа выходила, когда пользователь вводит «q». Я пробовал несколько вещей (делаю, хотя, если), но ни один из методов, похоже, не работает. Как это вызвано и как я могу его решить?Выход из программы Java при вводе

Ниже приведен исходный код:

// Test for primes 2 
import java.io.*; 
class FindPrime2 { 
public static void main(String args[]) 
throws IOException { 

//  int num; 
    boolean isPrime; 
    String str; 

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

    System.out.println("\nFINDING PRIME NUMBERS v0.1"); 
    System.out.print("\nPlease enter a number: "); 


    str = br.readLine(); 
    if(str == "q") System.exit(1); 

    int num = Integer.valueOf(str); 


    System.out.println("You have picked: " + num); 

    if(num < 2) isPrime = false; 
    else isPrime = true; 

    for(int i=2; i <= num/i; i++) { 
     if((num % i) == 0) { 
      isPrime = false; 
      break; 
     } 
    } 

    if(isPrime) System.out.println(num +" is Prime."); 
    else System.out.println(num + " is not Prime."); 
} 

}

ответ

7

Вы не можете использовать == на струнах. Вы должны использовать .equals(); если вы не заботитесь о чувствительности к регистру, вы можете использовать .equalsIgnoreCase()

== Оператор сравнивает REFERENCES в то время как .equals() сравнивает CONTENTS

снабжать струной, тетивой и т.п.

== О:

Оператор сравнения == не просто работать на булевы. Что и следовало ожидать:

int a = 5; 
int b = 5; 

//What will this display? 
a == b ? System.out.print (” True”) : System.out.print (” false”); 

Использования .equals() когда:

* Явная проверка равных значений

* Если вы хотите, чтобы проверить равенство objects; но только если этот объект переопределяет и определяет метод .equals().

+0

Спасибо! Он работает с использованием «if (str.equals (« q »)) System.exit (1);» – mmenschig

+0

Да. Просто убедитесь, что вы знаете, почему вы должны использовать '.equals()' И не забудьте принять ответ. – Brendan

+0

AFAIK, == может только проверять наличие булевых значений, правильно? Где я могу принять ответ? Я просто нажал «Ответ был полезен», было ли это так? – mmenschig

Смежные вопросы