如何在循环中包含SENTINEL值

问题描述 投票:0回答:2

问题:编写一个程序,提示用户是否愿意输入最小和最大数字。如果“是”,请使用for循环显示之间的数字用户输入的最小和最大数字(含)。继续执行此操作直到用户输入“完成”。

我已经写了一些代码,但是我无法按照我想要的方式工作。

package lab6;

import java.util.Scanner;

public class tester {
    public static final String SENTINEL = "done";

    public static void main(String[] args) {

        String answer;

        Scanner scan = new Scanner( System.in );

        System.out.println("Would you like to enter a minimum and a maximum number?");
        System.out.println( "Enter 'done' to stop" );

        answer = scan.next( );
        while ( answer != SENTINEL) {
            switch ( answer )
            {
            case "yes":
            case "Yes" :
                System.out.print("Enter the minimum:");
                int minimum = scan.nextInt();
                System.out.print("Enter the maximum:");
                int maximum = scan.nextInt();

                if (maximum > minimum) {

                    System.out.println("What are the integers between " + minimum + " and "
                            + maximum + ", inclusive?");
                    for (int i = minimum ; i < maximum +1; i++) 
                        System.out.print(i + " "); 
                    System.out.printf("%n");
                }else {
                    System.out.println("Invalid input, try again");
                    break;}

                }

            }
          System.out.print( "Enter the minimum " );
            answer = scan.next( );

         System.out.println( "Sentinel value detected. Goodbye" );
        }
}
java
2个回答
0
投票

当您输入完成时,它不会退出,因为答案仍然不等于SENTINEL。通过使答案等于SENTINEL,while循环条件将不再成立。您可以尝试将其添加到switch语句中:

case "done":
           System.out.print("Exiting");
           answer= SENTINEL;
           break;

0
投票

我如何固定最终代码:

package lab6;

import java.util.Scanner;

公共类问题9 {公共静态最终字符串SENTINEL =“ done”;

public static void main(String[] args) {

    String answer;
    answer = " " ;
    Scanner scan = new Scanner( System.in );

    System.out.println("Would you like to enter a minimum and a maximum number? (input 'yes' or 'no')");
    System.out.println( "Input 'done' to stop" );

    while (answer != SENTINEL) {
         answer = scan.next();

        switch (answer) {
        case "yes":
        case "Yes" :
            System.out.print("Enter the minimum:");
            int minimum = scan.nextInt();
            System.out.print("Enter the maximum:");
            int maximum = scan.nextInt();

            if (maximum > minimum) {

                System.out.println("What are the integers between " + minimum + " and "
                        + maximum + ", inclusive?");
                for (int i = minimum ; i < maximum +1; i++) 
                    System.out.print(i + " "); 
                System.out.printf("%n");

            }else {
                System.out.println("Invalid input, try again");
                break;
            }

            System.out.println("Would you like to enter a minimum and a maximum number? (input 'yes' or 'no')");
            System.out.println( "Input 'done' to stop" );
            break;

        case "done" :
            System.out.println("Calculation terminated");
            break;
        case "no" :
        case "No" :
            System.out.println("Ok, bye");
            break; 
        default :
            System.out.println("Please input yes or no");
            break;
        }
    }   
    scan.close();
}

}

© www.soinside.com 2019 - 2024. All rights reserved.