Как остановить некоторое время l oop в java после ввода указанной c строки? - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь остановить al oop, который принимает целые числа после ввода в консоли «End», но я не могу найти способ сделать это.

Scanner scan = new Scanner(System.in);
        int bottles = Integer.parseInt(scan.nextLine()) * 750;
        int cnt = 1;
        int platesTotal;
        int potsTotal;
        int nrPlates = 0;
        int nrPots = 0;
        while(true){
            int plates = scan.nextInt();
            platesTotal = plates * 5;
            if(cnt%3==0) {
                int pots = scan.nextInt();
                nrPots = nrPots + pots;
                nrPlates = nrPlates + pots;
                potsTotal = pots * 15;

                if (bottles < potsTotal + platesTotal) {
                    System.out.println("Not enough detergent, " + (potsTotal + platesTotal - bottles) + " ml. more necessary!");
                    break;
                }
                else
                    if(bottles >= potsTotal + platesTotal) {
                        String enough = scan.nextLine();
                        if (enough.equals("End")) {
                            if (bottles >= potsTotal + platesTotal) {
                                System.out.println("Detergent was enough!");
                                System.out.println(nrPlates + " dishes and " + nrPots + "pots were washed.");
                                System.out.printf("Leftover detergent %d ml.", bottles - potsTotal - platesTotal);
                                break;
                            }
                        }
                    }
            }
            cnt++;
        }

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

Ответы [ 3 ]

0 голосов
/ 06 мая 2020

Я бы посоветовал печатать сообщения на консоли, чтобы подтвердить пользователю, что вы хотите ввести. В противном случае будет отображаться пустое окно. Я также предлагаю вам определить логическую переменную, чтобы избежать while l oop, переключив ваше достаточно на .next, а не на .nextLine. Таким образом, вы переопределяете свое логическое значение как false, чтобы разбить while l oop, а также получить желаемый результат, чтобы контролировать вывод своей программы. Это скомпилировано со всеми записями 1:

package com.climatedev.test;

import java.util.Scanner;

public class Test {


    public static void main(String[] args) {
        System.out.println("How many bottles?");
        Scanner scan = new Scanner(System.in);
        int bottles = scan.nextInt() * 750;
        int cnt = 1;
        int platesTotal;
        int potsTotal;
        int nrPlates = 0;
        int nrPots = 0;
        boolean run = true;
        while(run){
             System.out.println("How many plates?");
             int plates = scan.nextInt();
             platesTotal = plates * 5;
             if(cnt%3==0) {
                 int pots = scan.nextInt();
                  nrPots = nrPots + pots;
                  nrPlates = nrPlates + pots;
                  potsTotal = pots * 15;

              if (bottles < potsTotal + platesTotal) {
                   System.out.println("Not enough detergent, " + (potsTotal + platesTotal - bottles) + " ml. more necessary!");
                   break;
               }
              else
                  if(bottles >= potsTotal + platesTotal) {
                      System.out.println("Would you like to end the program? (Enter End)");
                      String enough = scan.next();
                  if (enough.equals("End")) {
                      if (bottles >= potsTotal + platesTotal) {
                          System.out.println("Detergent was enough!");
                          System.out.println(nrPlates + " dishes and " + nrPots + "pots were washed.");
                          System.out.printf("Leftover detergent %d ml.", bottles - potsTotal - platesTotal);
                          run = false;
                          System.out.println("Goodbye");
                          break;
                        }
                    }
                }
            }
        cnt++;
         }
    }
}

Я также немного изменил ваши бутылки, чтобы использовать nextInt, хотя это зависит от вашего использования. Если вы думаете, что конечный пользователь может ввести что-то вроде «Количество бутылок ...», это будет лучше, но в противном случае почему бы не использовать более простой вызов nextInt?

0 голосов
/ 06 мая 2020

, если вы хотите использовать объект сканера как для строк, так и для чисел, вы должны проанализировать число:

 Scanner scanner = new Scanner(System.in);
 String str = scanner.nextLine();
 int num = Integer.parseInt(scanner.nextLine());

или вы можете использовать два сканера (один для строк, а другой для чисел):

 Scanner strScanner = new Scanner(System.in);
 Scanner numScanner = new Scanner(System.in);
 String str = strScanner.nextLine();
 int num  = numScanner.nextInt();
0 голосов
/ 06 мая 2020

Попробуйте это String enough = scan.next(); вместо scan.nextLine();

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...