java - 程序需要一直循环直到键入键 "Q"/"q"

标签 java object java.util.scanner do-loops

程序提取数字,我希望它继续循环,直到用户键入“Q”/“q”键。例如,当用户按下“O”键时,程序应打印他们输入的数字的个位数,对于用户输入的任何 3 位数字,依此类推。当我现在运行代码时,没有输出,但也没有错误。

import java.util.Scanner;
public class DigitExtractor {

    public static void main(String[] args) 
            throws java.io.IOException{

        char input;
        input = (char) System.in.read();
        Scanner s = new Scanner(System.in);

        variables Num = new variables();

        do {

            System.out.print("Enter an integer: ");
            String wholeNumber = s.nextLine();

            Num.ones = wholeNumber.charAt(2);
            Num.tens = wholeNumber.charAt(1);
            Num.hundred = wholeNumber.charAt(0);

            System.out.println("show (W)hole number.");
            System.out.println("show (O)nes place number.");
            System.out.println("show (T)ens place number.");
            System.out.println("show (H)undreds place number.");

            input = (char) System.in.read();
            System.out.println("Enter your choice: " + input);

            if(input == 'W' || input == 'w') {
                System.out.println(Num.WholeNum);
            }
            else if(input == 'O' || input == 'o') {
                System.out.println(Num.ones);
            }
            else if(input == 'T' || input == 't') {
                System.out.println(Num.tens);
            }
            else if(input == 'H' || input == 'H') {
                System.out.println(Num.hundred);

            }
        } while (input == 'q');
    }
}

class variables {
    char hundred; 
    char tens; 
    char ones;
    char WholeNum;
}

最佳答案

阅读变得困惑。为了使用扫描仪读取整数,我选择了 nextInt。这很有帮助。我同意你的方法,不要将事情分解成更小的 block 。并且(修订)我仅使用扫描仪进行读取,甚至是选择的字符。我还在您必须按下选项之前添加了提示,以便您知道。

       public static void main(String[] args)


 throws java.io.IOException {
       int hundred; //my compiler was fussy about having the extra class
       int tens;
       int ones;
       char input = ' '; //initialize outside loop
       Scanner s = new Scanner(System.in);



   do {

       System.out.print("Enter an integer: ");
       int wholeNumber = s.nextInt();

       ones = wholeNumber % 10;
       tens = (wholeNumber / 10) % 10;
       hundred = (wholeNumber / 100) % 10;

       System.out.println("show (W)hole number.");
       System.out.println("show (O)nes place number.");
       System.out.println("show (T)ens place number.");
       System.out.println("show (H)undreds place number.");
       System.out.println("(Q)uit");
       System.out.print("Enter your choice: ");
       input = s.next().trim().charAt(0); //using scanner only
       //System.out.println("Enter your choice: " + input);

       if (input == 'W' || input == 'w') {
           System.out.println(wholeNumber);
       } else if (input == 'O' || input == 'o') {
           System.out.println(ones);
       } else if (input == 'T' || input == 't') {
           System.out.println(tens);
       } else if (input == 'H' || input == 'H') {
           System.out.println(hundred);

       }
   } while ((input != 'q') && (input != 'Q'));


}

   }

关于java - 程序需要一直循环直到键入键 "Q"/"q",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57067907/

相关文章:

java - 数组中非 0 的最小数字

java - 我如何为篮球比分计数器应用程序存储包括球队名称在内的比赛比分?

Java 替换字符串中的\n

javascript - 使3个数组相互对应,第一个是对象名称

java - Java中的扫描仪可以从对话框中读取文本吗

java - 扫描仪(System.in) - 无限循环

java - Java 中的 "Scanner.nextLine()"会跳过,"NoLineFound"-Exception

java - JTable.updateUI() 不刷新我的表

javascript - IsPlainObject,东西?

python - 为什么 object.__new__ 在这三种情况下的工作方式不同