2013-08-23 2 views
0

Итак, я полный noob на Java и экспериментирую с калькулятором. Код ниже - это то, что у меня есть до сих пор. Проблема в том, что код работает до тех пор, пока я не добавлю метку «loop:», после добавления метки по какой-либо причине сканер получает сообщение об ошибке. Я хочу, чтобы метка циклов была так, что пользователь может выбрать (если инструкция внизу кода), продолжать или нет использовать калькулятор. Любая помощь будет оценена по достоинству.Ошибка сканера «Вход не может быть решена с переменной»

import java.util.Scanner; 


public class MainClass { 



    public MainClass(){ 

     loops: 

     Scanner input = new Scanner(System.in); 


     System.out.println("First Number: "); 
     int number1 = input.nextInt(); 
     System.out.println("Second Number: "); 
     int number2 = input.nextInt(); 
     System.out.println("Operator (+, -, /, *)"); 
     String operation = input.next(); 
     String cont = input.next(); 

     int total; 

     if(operation.equals("+")){ 
      total = number1 + number2; 
      System.out.println(total); 
     } 
     if(operation.equals("-")){ 
      total = number1 - number2; 
      System.out.println(total); 
     } 
     if(operation.equals("*")){ 
      total = number1 * number2; 
      System.out.println(total); 
     } 
     if(operation.equals("/")){ 
      total = number1/number2; 
      System.out.println(total); 
     } 

     System.out.println("Continue? Y/N: "); 
     if (cont.equalsIgnoreCase("n")){ 
      break loops; 
     } 
    } 

    public static void main(String[] args) { 
     new MainClass(); 


    } 

} 
+0

Я думаю, 'loops:' это тип конструктора 'MainClass' – Smit

+0

' loops: 'не является законным - в Java у нас нет меток – alfasin

+0

Используйте цикл (while или for loop), а не метки и goto (которые не существуют в Java). Прочитайте http://docs.oracle.com/javase/tutorial/java/nutsandbolts/flow.html. И когда вы получите сообщение об ошибке, прочитайте сообщение об ошибке. Это информативно. Если вы этого не понимаете, опубликуйте его. Это также информативно для нас, и мы можем объяснить их вам. –

ответ

0

Вам необходимо использовать петлю. Метки действительно существуют, но вы просто не используете их должным образом. Ярлыки могут по существу обозначать цикл, чтобы вы могли разбить/продолжить определенные циклы.

0

См фиксированный класс ниже (там была еще одна проблема - с cont), следующий код работает для меня:

import java.util.Scanner;  

public class MainClass { 

    public MainClass(){ 

     Scanner input = new Scanner(System.in); 

     while(true){ 
      System.out.println("First Number: "); 
      int number1 = input.nextInt(); 
      System.out.println("Second Number: "); 
      int number2 = input.nextInt(); 
      System.out.println("Operator (+, -, /, *)"); 
      String operation = input.next(); 

      int total; 
      if(operation.equals("+")){ 
       total = number1 + number2; 
       System.out.println(total); 
      } 
      else if(operation.equals("-")){ 
       total = number1 - number2; 
       System.out.println(total); 
      } 
      else if(operation.equals("*")){ 
       total = number1 * number2; 
       System.out.println(total); 
      } 
      else if(operation.equals("/")){ 
       total = number1/number2; 
       System.out.println(total); 
      } 
      else{ 
       System.out.println("Undefined input!"); 
      } 
      System.out.println("Continue? Y/N: "); 
      String cont = input.next(); 
      if (cont.equalsIgnoreCase("n")){ 
       break; 
      } 
     } 
    } 

    public static void main(String[] args) { 
      new MainClass(); 
    } 
} 

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

0

Ваш код, во-первыхов, требует перерыва заявления в каждом из этикеток переключателя cases.Secondly, если используются не может быть применен к переменным ответам declarations.That почему вы получите ошибку с Scanner.I рекомендует вам использовать делать-то время цикла которая представляет собой запись под контролем цикла, синтаксис выглядит следующим образом

do 
    { 
     //code you want to execute,will get executed at least once 
    } 

    while(boolean condition); 

Вы можете разместить случаи переключения в части делать и хочет ли или нет пользователя продолжать будет идти в качестве булева условия в то время part.Try это !

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