Попросите да / нет, чтобы вернуться в цикл - PullRequest
0 голосов
/ 06 августа 2011

Как мне вернуться к циклу try , если пользователь отвечает Y / Y? Я знаю, что приведенный ниже код не запрашивает у пользователя Хотите повторить попытку (Д / Н)? . Я могу использовать только bufferedReader на данный момент.

import java.io.*;

public class Num10 {
    public static void main(String[] args){
        String in="";
        int start=0, end=0, step=0;

        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));


        try{
            System.out.print("Input START value = ");
            in=input.readLine();
            start=Integer.parseInt(in);
            System.out.print("Input END value = ");
            in=input.readLine();
            end=Integer.parseInt(in);
            System.out.print("Input STEP value = ");
            in=input.readLine();
            step=Integer.parseInt(in);
        }catch(IOException e){
            System.out.println("Error!");
        }

        if(start>=end){
            System.out.println("The starting number should be lesser than the ending number");
            System.exit(0);
        }else
        if(step<=0){
            System.out.println("The step number should always be greater than zero.");
            System.exit(0);
        }

        for(start=start;start<=end;start=start+step){
            System.out.println(start);
        }       

        System.out.println("\nDo you want to try again (Y/N)?");
    }
}

Ответы [ 4 ]

7 голосов
/ 06 августа 2011

do ... while цикл будет подходящим для этого.

boolean again = false;
do
{
     // your code here
     again = askQuestion();
} while(again);

, или вы можете просто использовать обычный цикл while:

boolean again = true;
while(again)
{
    // your code here
    again = askQuestion();
}

И для обоих из них,askQuestion - это другой метод, который задает пользователю вопрос и возвращает true или false.

1 голос
/ 06 августа 2011

use do{..... }while();

like:

boolean again=true;
do{
    try{
    //your code
    }
    //your code
}while(again);

Как вернуться к циклу попытки, если пользователь отвечает Y / y?
Вы не можете вернуться к try{.....}.Вы должны использовать

public static void main(String... args){
    //your code
} 

вместо public static void main(String[] args){}
, а для возврата используйте main(); в нужном месте кода.

0 голосов
/ 06 августа 2011

В Java есть много инструментов для чего-то подобного. Они известны как «петли». В Java доступны следующие циклы: while, do ... while, for и for ... each. Цикл while самый простой. Это выглядит так:

while (condition) {
    // Some code
}

В основном, где я помещаю "условие", вы указываете любое логическое значение. Логическое значение - это просто значение, которое может быть либо true, либо false, но не более того. В Java вы можете создавать переменные типа boolean, но часто вы не будете явно создавать логическое значение.

Вместо этого вы будете использовать условные операторы. Например, x < y, x == y и x >= y являются «условными выражениями». Это означает, что в конце они оцениваются как логическое значение. Итак, в этом коде:

int x = 1;
int y = 5;
if (x < y) {
    // Code
}

Там, где написано x < y, на самом деле это оценивается в true за кадром. Логические значения важны и используются во многих местах в Java.

В любом случае, вернемся к теме циклов, давайте перейдем к следующему циклу, do ... while. Это выглядит так:

do {
    // Code
} while (condition);

do ... while работает так же, как while, но всегда запускается хотя бы один раз , даже если условие false.

for и for ... each немного сложнее. Они действительно просто ярлыки. Рассмотрим следующий код:

int i = 0;
while (i < 10) {
    System.out.println("I is: " + i);
    i++;
}

Здесь цикл будет выполняться 10 раз, а i будет отслеживать количество циклов. Цикл for может сделать то же самое, но более кратко:

for (int i = 0; i < 10; i++) {
    System.out.println("I is: " + i);
}

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

Цикл for ... each более сложный, чем все остальные, поэтому, если вы еще не поняли его, не беспокойтесь. По сути, это быстрый способ получить все элементы списка или все, что находится в API коллекций. Например, скажем, у вас есть список строк, вы можете использовать это, чтобы получить все строки в списке:

for (String string : aList) {
    System.out.println(string);
}

Это пройдет через каждую строку в списке и выведет ее на печать.

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

boolean condition = true;
while (condition) {

    // Your code

    try {
        while (true) { //Creates an infinite loop
            in = input.readLine();
            if (in.equalsIgnoreCase("y")) {
                condition = true;
                break;
            } else if (in.equalsIgnoreCase("n")) {
                condition = false;
                break;
            } else {
                System.out.println("Please enter either Y or N.");
            }
        }
    } catch (IOException e) {
        System.out.println("ERROR!");
    }

}

Здесь мы используем две while петли. Первый оборачивает весь код, проверяя логическое значение с именем condition. Мы инициализировали его как true, поэтому циклы всегда будут запускаться хотя бы один раз. Во-вторых, я сделал еще один цикл while. Здесь я сделал while (true), который будет работать вечно. Однако вы можете «выйти» из цикла, используя ключевое слово break. Причина, по которой я это использовал, заключается в том, что у пользователя есть возможность ввести что-то, кроме «y» или «n» В этом случае, он должен просто спросить их снова. Если он получает «Y», он устанавливает condition в true и выходит из цикла (что технически не нужно, поскольку условие уже установлено в true). Если он получает «N», он устанавливает его на false и выходит из цикла. Поскольку сейчас false, цикл будет завершен, и программа завершится.

0 голосов
/ 06 августа 2011

Как мне вернуться к циклу попытки, если пользователь отвечает Y / Y?

try не создает цикл. Вот в чем проблема.

Циклы автоматически «возвращаются», пока что-то не закончится. Вот что делает их петлями.

Таким образом, вы помещаете фактический цикл вокруг блока try и задаете вопрос в конце цикла, и выходите из цикла, если на него ответили с помощью N / N (или чего-либо еще; вы можете сами решить, как хочу справиться, если на входе какой-то другой мусор). Цикл do - while подходит, потому что он проверяет свое условие выхода в конце, а не в начале (как while и for).

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