2015-09-21 4 views
-2

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

Повторяющиеся локальных переменных минут
Дубликат локальная переменная выбора

Несоответствие типа: не удается преобразовать из двойной строки
Оператор/ не определено для типа аргумента (ов) Строка, двойной
оператор/ не определено для типа аргументов String, double
Несоответствие типа: не может конвертировать из двойного в String

 `import java.util.Scanner; 

    public class LoopTest { 
    public static void main(String[] arge) { 
    Scanner scanner = new Scanner(System.in); 
    double minutes = 0; 
    double minutesperday; 
    double minutesperyear; 
    double years; 
    double days; 
    double choice; 

    boolean keepPlaying = true; 
    while (keepPlaying) { 
     String minutes; 
     String choice; 

     System.out.print("number of minutes"); 
     minutes = scanner.nextDouble(); 

     minutesperday = 60 * 24; 
     minutesperyear = minutesperday * 365; 

     years = (minutes/minutesperyear); 
     days = (minutes/minutesperday) % 365; 

     System.out.print(minutes + " is about" + "\nYears:" + years + "\nDays:" + days); 

     System.out.print("\nWant to enter more minutes (y/n)? "); 
     choice = scanner.nextDouble(); 

     if (choice.equals("y")) { 
      keepPlaying = true; 
     } else { 
      keepPlaying = false; 
     } 

     } 

} 
} 
+1

почему вы объявляете минуты 'Струнных минуты; еще раз? –

+0

Комментарий Строка минут и выбор строки .. и ваш код будет работать нормально –

+2

Ошибка довольно явная ... –

ответ

1

довольно просто: как ErrorMessage уже говорит:

дубликатом локальная переменная

Которые в основном означает, что две переменные с тем же именем существует в том же объеме. В вашем случае double minutes и String minutes и то же самое для choice. Фактически String minutes является причиной других ошибок, так как java считает minutes/minutesperyear означает переменную String minutes, а не double minutes.

1
  • Снимите String choice и double choice, вы можете напрямую сканировать booleantrue/false и хранить его в keepPlaying

  • Удалить String minutes, потому что у вас уже есть double minutes переменную, которая может хранить протоколы

  • Закройте scanner

исправленного код

Scanner scanner = new Scanner(System.in); 
    double minutes = 0; 
    double minutesperday; 
    double minutesperyear; 
    double years; 
    double days; 

    boolean keepPlaying = true; 
    while (keepPlaying) 
    { 
     System.out.print("number of minutes"); 
     minutes = scanner.nextDouble(); 

     minutesperday = 60 * 24; 
     minutesperyear = minutesperday * 365; 

     years = (minutes/minutesperyear); 
     days = (minutes/minutesperday) % 365; 

     System.out.print(minutes + " is about" + "\nYears:" + years + "\nDays:" + days); 

     System.out.print("\nWant to enter more minutes (true/false)? "); 
     keepPlaying = scanner.nextBoolean(); 
    } 
    scanner.close();