2015-03-30 3 views
0
import java.util.Scanner; 

Методы общественного класса {Почему оператор If не работает для строки?

/* 
* Compound interest Program Quarterly 
*/ 


    public static void main(String[] args) { 
     Scanner keyboard = new Scanner (System.in); 

     System.out.println("What is the Rate"); 
     int rate = keyboard.nextInt()/100; 
     System.out.println("What is the Amount"); 
     int amount = keyboard.nextInt(); 
     System.out.println("How many years?"); 
     int years = keyboard.nextInt(); 

     keyboard.nextLine(); 
     System.out.println("How is it compounded? Press Q = Quarterly, A = Anually, S = SemiAnnualy, M = Monthly"); 

     String answer = keyboard.nextLine(); 

     int easy = amount*(1+(rate/years)); 
     int pow = 4 * years; 


     if (answer == "/Q"){ 
      System.out.println("Your answer compounded Quarterly is: " + Math.pow(easy,pow)); 

Это код, но не, если оператор с строки == «Q» не работает, потому что, когда я нажимаю Q ничего не происходит? В чем проблема?

+0

Вы видели '/'? – user2357112

+0

Да, я, к сожалению, не работал, но он все еще не работает, несмотря на то, что я просто добавил его после просмотра аналогичного вопроса. –

+0

Вы явно не понимаете разницы между оператором '==', который сравнивает ссылочные значения (адреса объектов) и 'equals' или' equalsIgnoreCase'. –

ответ

0

Право на Java? использовать equalsIgnoreCase, потому что вы могли бы ввести «д» и что/они рассказывали о слишком, имейте это в виду

+0

Я печатаю в верхнем регистре Q, чтобы проверить его, я даже не могу его протестировать, потому что он игнорирует upppercase Q, это не нижний регистр. –

+0

попробуйте отладить с помощью answer.lenght() и System.out.println («ООО« + ответ + «ООО»), возможно, java добавляет фид строки к вашему ответу, и поэтому он не выполняет проверку. независимо, все еще использовать equalsIgnoreCase, так что peopel может набирать как Q, так и q – gia

0

Первый вопрос заключается в том, что у вас есть опечатка (прямой слэш), в этой строке:

if (answer == "/Q"){ 

Вторая проблема заключается в том, что вы не сравниваете такие строки. Вместо этого используйте метод «equals()».

if(answer.equals("Q")){ 

Смотрите здесь для получения дополнительной информации: How do I compare strings in Java?

+0

Я вижу, спасибо за это. –

0

Может быть, вы можете попробовать

+0

Да, это сработало, но я все равно хотел бы понять, почему предыдущий не работал, спасибо за это, хотя я, вероятно, просто переключится на это –

+0

@WinterOne ** == ** просто проверьте, являются ли эти два объекта одинаковыми один и ** равно ** сделать проверку, если две строки пришли содержание. –