2015-11-17 8 views
-3

Нужна помощь: Это мой код: http://pastebin.com/7aG0xbhJ Не удалось разобраться, как опубликовать его здесь. Просто продолжает говорить о прекращении. Попытка создать калькулятор.New To Java (Программа Keep Term Termating)

import java.util.Scanner; 
public class Calculator { 
    public static void main(String args[]) { 
      Scanner input=new Scanner(System.in); 
      System.out.println("Welcome to My Multi Calculator"); 
      System.out.println("Here are the choices:"); 
      System.out.println("(1) Convert Pounds to Kilograms"); 
      System.out.println("(2) Convert USD to Euro"); 
      System.out.println("(3) Convert Degrees F to C"); 
      System.out.println("(4) Calculate 20% gratuity on a bill"); 
      System.out.println("(5) Calculate if a number is prime"); 
      System.out.println("(6) Calulate the absolute difference of two numbers"); 
      System.out.println("(7) Quit"); 

     if (input.equals("1")) { 
      //System.out.println("1"); 
      System.out.println("Input amount:"); 
      double size = input.nextInt(); 
      System.out.println("Answer: "+ size*0.453592); 
     } 
     if (input.equals("2")) { 
      System.out.println("2"); 
     } 
     if (input.equals("3")) { 
      System.out.println("3"); 
     } 
     if (input.equals("4")) { 
      System.out.println("4"); 
     } 
     if (input.equals("5")) { 
      System.out.println("5"); 
     } 
     if (input.equals("6")) { 
      System.out.println("6"); 
     } 
     if (input.equals("7")) { 
      System.out.println("7"); 
     } 
    } 
} 
+0

Добавить код здесь и использовать '{}' для форматирования. – TheLostMind

+0

https://stackoverflow.com/help/formatting –

+4

Программы завершаются, когда они выполняют свои инструкции. Ожидается. – David

ответ

4

Как сказано, вы тестируете, если объект сканера равен экземпляру String, который никогда не является истинным, поскольку они представляют собой совершенно разные типы объектов.

Вы хотели бы заменить это:

Scanner input=new Scanner(System.in); 
// printing here 
if (input.equals(... 

с этим:

Scanner scanner = new Scanner(System.in); 
// printing here 
String input = scanner.nextLine(); 
if (input.equals(... 

Дополнение, конечно, когда вы сделаете это, вы должны также изменить другие ссылки, как

double size = input.nextInt(); 

, чтобы использовать ваш scann er instance:

double size = scanner.nextInt(); 
+0

if (input.equals ("1")) { \t //System.out.println("1 "); \t System.out.println ("Input amount:"); двойной размер = input.nextInt(); System.out.println («Ответ:» + размер * 0,453592); } – Jokes

+0

input.nextInt дает ошибку, когда я делаю то, что делает первый. Который преобразует килограммы в килограммы – Jokes

+0

Ошибка: «Метод nextInt() не определен для типа String« – Jokes

0

Вы на правильном пути, но постарайтесь думать об этом в более широком смысле. Вы хотите, чтобы ваша программа перестала уходить, не так ли? Какую логику вы можете использовать для реализации этого поведения?

Что вы хотите, чтобы ваша программа зациклилась до тех пор, пока не будет задан определенный аргумент, что приведет к его завершению. Нечто подобное должно работать

while(!"USER_INPUT".equals("7")) { 
    //continue checking values 
} 

Это позволит вашему циклу, где вы проверяете значение продолжать работать до тех пор, как то, что пользователь вводит не равно ваш выход случае. Вы также захотите убедиться, что в этом цикле вы запрашиваете у пользователя другой ввод. Без этого вы просто застряли в этом цикле без каких-либо изменений.

Надеюсь, это поможет и удачи!

+0

На самом деле, я думаю, что вы возглавляете OP в неправильном направлении. Выполнение этого способа, как вы предполагаете, приведет к бесконечному циклу с текущим кодом. – eis

+0

Вот почему я упомянул, что им нужно будет убедиться, что они обновляют значение из цикла. Как еще вы предлагаете сохранить эту программу для более чем 1-й итерации? –

+0

'input' в коде OP - это сам сканер, а не его отсканированный ввод. Сравнение его для равенства со строкой всегда будет терпеть неудачу. – Wormbo