Как полностью завершить цикл после ввода «q»? - PullRequest
0 голосов
/ 14 февраля 2019

Программа не останавливается после ввода «q»;он по-прежнему печатает случайное число и его сумму.Я хочу, чтобы программа полностью остановилась сразу после ввода "q".

import java.util.Scanner;
import java.util.Random;
public class lab7
{
public static void main(String[] args)
{
    Scanner input = new Scanner(System.in);
    Random rand = new Random();
    String letter = " ";
    int num = 0;
    System.out.print("Push your luck");
      */the program prints push your luck! 
    while(!letter.equals("q")){
        int sum = rand.nextInt(12);
        System.out.println(" ");
        letter = input.nextLine();
         */ the program should not print random number or sum when input "q" 
         */but in this case it does
        System.out.println("Random number: " + sum);
        System.out.println("Updated number: " + num);
        num = num + sum;
}
}
}

Ответы [ 5 ]

0 голосов
/ 14 февраля 2019

A для цикла должно сработать.

for(String aletter = input.nextLine();!aletter.equals("q");aletter=input.nextLine()) { 
    int sum = rand.nextInt(12);
    System.out.println(" ");
    System.out.println("Random number: " + sum);
    System.out.println("Updated number: " + num);
    num = num + sum;
}

И если вы не используете ввод, его можно упростить:

while(!input.nextLine().equals("q")) { 
    int sum = rand.nextInt(12);
    System.out.println(" ");
    System.out.println("Random number: " + sum);
    System.out.println("Updated number: " + num);
    num = num + sum;
}

И если вы хотите по крайней мере один вывод перед вамив состоянии остановить это с "q":

do { 
    int sum = rand.nextInt(12);
    System.out.println(" ");
    System.out.println("Random number: " + sum);
    System.out.println("Updated number: " + num);
    num = num + sum;
}while(!input.nextLine().equals("q"));
0 голосов
/ 14 февраля 2019

Сначала дайте вашим переменным осмысленные имена.Так что num должно быть sum, а sum должно быть num.Затем измените код внутри цикла следующим образом:

Scanner input = new Scanner(System.in);
Random rand = new Random();
String letter = " ";
int sum = 0;
System.out.print("Push your luck");
while (!letter.equals("q")) {
    int num = rand.nextInt(12);
    System.out.println(" ");
    letter = input.nextLine();
    if (!letter.equals("q")) {
        sum = sum + num;
        System.out.println("Random number: " + num);
        System.out.println("Updated number: " + sum);
    }
}

Инструкция if внутри цикла предотвращает выполнение любого дополнительного кода при вводе q.

0 голосов
/ 14 февраля 2019

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

letter = input.nextLine();
while(!letter.equals("q")){
        int sum = rand.nextInt(12);
        System.out.println(" ");
        System.out.println("Random number: " + sum);
        System.out.println("Updated number: " + num);
        num = num + sum;
        letter = input.nextLine();
}
0 голосов
/ 14 февраля 2019

Вы можете сделать предложение if, которое проверяет, был ли введен q, и использовать оператор break;, чтобы остановить его.Оператор continue также будет работать в этом случае.

0 голосов
/ 14 февраля 2019

Похоже, вы хотите сделать:

letter = input.nextLine();
while(!letter.equals("q")) {
    int sum = rand.nextInt(12);
    System.out.println(" ");
    System.out.println("Random number: " + sum);
    System.out.println("Updated number: " + num);
    num = num + sum;
    letter = input.nextLine();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...