2015-03-24 4 views
0

Я пытаюсь написать программу, которая запрашивает у пользователя 2 номера, а затем попросит пользователя выбрать команду из меню, введя соответствующий номер в команду. Я могу написать программу, если я беру ввод как Int, но не могу понять его для строки, также она должна быть строкой. У меня возникают проблемы, когда он входит в цикл while для проверки ввода пользователя, который не останавливается, когда оператор ложный, он останется в цикле. Я не могу понять, что я делаю неправильно. Вот код, который у меня есть.Получение строки из сканера при вводе номера

import java.util.Scanner; 
 
public class ab { 
 
    public static void main(String[] args) { 
 
    System.out.println("-------------------------------------"); 
 
    Scanner stdIn = new Scanner(System.in); 
 
    double L; 
 
    System.out.print("Enter the left operand: "); 
 
    L = stdIn.nextDouble(); 
 
    double R; 
 
    System.out.print("Enter the right operand: "); 
 
    R = stdIn.nextDouble(); 
 
    System.out.println("-------------------------------------"); 
 
    System.out.println("1 -> Multiplication"); 
 
    System.out.println("2 -> Division"); 
 
    System.out.println("3 -> Addition"); 
 
    System.out.println("4 -> Subraction"); 
 
    System.out.println("-------------------------------------"); 
 
    String input; 
 
    System.out.print("Choose one of the following commands by enterning the corresponding number: "); 
 
    input = stdIn.next(); 
 
    System.out.println(); 
 
    while (!input.equals(1) && !input.equals(2) && !input.equals(3) && !input.equals(4)) { 
 
     System.out.print("Invalid entry, please type a valid number (1, 2, 3 or 4): "); 
 
     input = stdIn.next(); 
 
     System.out.println(); 
 
     if (input.equals(1)) { 
 
     System.out.print(L + " * " + R + " = " + (L * R)); 
 
     } else if (input.equals(2)) { 
 
     System.out.print(L + "/" + R + " = " + (L/R)); 
 
     } else if (input.equals(3)) { 
 
     System.out.print(L + " + " + R + " = " + (L + R)); 
 
     } else { 
 
     System.out.print(L + " - " + R + " = " + (L - R)); 
 
     } 
 
    } 
 
    stdIn.close(); 
 
    } 
 
}

Любая помощь будет оценена. Благодарим вас за продвижение.

ответ

0

Линия input = stdIn.next(); принимает ввод как String , в то время как ваше сравнение против целого. Так String никогда не сравняется Int

, вы можете попробовать ваше состояние пока петля на:

while (!input.equals("1") && !input.equals("2") && !input.equals("3") && !input.equals("4")) 

обратите внимание на двойные кавычки вокруг чисел

+0

Благодарим за такой быстрый ответ, s решила мою проблему! – Cody

0

ответа, но проверить это

import java.util.Scanner; 

public class ab { 

public static void main(String[] args) { 
    System.out.println("-------------------------------------"); 
    Scanner stdIn = new Scanner(System.in); 
    double L; 
    System.out.print("Enter the left operand: "); 
    L = stdIn.nextDouble(); 
    double R; 
    System.out.print("Enter the right operand: "); 
    R = stdIn.nextDouble(); 
    System.out.println("-------------------------------------"); 
    System.out.println("1 -> Multiplication"); 
    System.out.println("2 -> Division"); 
    System.out.println("3 -> Addition"); 
    System.out.println("4 -> Subraction"); 
    System.out.println("-------------------------------------"); 
    String input; 
    System.out.print("Choose one of the following commands by enterning the corresponding number: "); 

    input = stdIn.next(); 

    while (true) { 

     if (!input.equals("1") && !input.equals("2") && !input.equals("3") && !input.equals("4")) { 
      System.out.print("Invalid entry, please type a valid number (1, 2, 3 or 4): "); 
      input = stdIn.next(); 
     } else { 
      if (input.equals("1")) { 
       System.out.print(L + " * " + R + " = " + (L * R)); 
       break; 
      } else if (input.equals("2")) { 
       System.out.print(L + "/" + R + " = " + (L/R)); 
       break; 
      } else if (input.equals("3")) { 
       System.out.print(L + " + " + R + " = " + (L + R)); 
       break; 
      } else { 
       System.out.print(L + " - " + R + " = " + (L - R)); 
       break; 
      } 
     } 

    } 


    stdIn.close(); 
} 

}