当前位置: 首页 > 知识库问答 >
问题:

在While循环测试之前,While循环不识别扫描仪输入

东方建修
2023-03-14
import java.util.Scanner;

public class Switch {


    private static void case1() {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter side A");
        String a = input.next();

        System.out.println("Enter side B");
        String b = input.next();

        double number1 = Double.parseDouble(a);
        double number2 = Double.parseDouble(b);


        double A2 = number1 * number1;
        double B2 = number2 * number2;

        System.out.println(A2);
        System.out.println(B2);

        double Csq = A2 + B2;

        double C = Math.sqrt(Csq);

        System.out.println("C equals " + C);
        input.close();
    }

    private static void case2() {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter side A");
        String a = input.next();

        System.out.println("Enter side C");
        String c = input.next();

        double number1 = Double.parseDouble(a);
        double number2 = Double.parseDouble(c);


        double A2 = number1 * number1;
        double C2 = number2 * number2;

        System.out.println(A2);
        System.out.println(C2);

        double b1 = C2 - A2;

        double B = Math.sqrt(b1);

        System.out.println("B equals " + B);
        input.close();
    }

    private static void case3() {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter side B");
        String b = input.next();

        System.out.println("Enter side C");
        String c = input.next();

        double number1 = Double.parseDouble(b);
        double number2 = Double.parseDouble(c);


        double B2 = number1 * number1;
        double C2 = number2 * number2;

        System.out.println(B2);
        System.out.println(C2);

        double a1 = C2 - B2;

        double A = Math.sqrt(a1);

        System.out.println("A equals " + A);
        input.close();
    }


    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String cont = "y";

        do {

            try{
                System.out.println("Welcome to the Pythagorean Theorm Program!!");
                System.out.println("");
                System.out.println("Choose one of the following:");
                System.out.println("");
                System.out.println("1. A2 + B2 = X");
                System.out.println("2. A2 + X = C2");
                System.out.println("3. X + B2 = C2");

                int choice = input.nextInt();

                switch (choice) {

                    case 1: case1();
                            break;
                    case 2: case2();
                            break;
                    case 3: case3();
                            break;
                }
            }
            catch(Exception e) {
                System.out.println("error");
            }

            System.out.println("Do you want to continue?");
            String more = input.next();
        } while (more.equals(cont));



    }
}

我需要在while循环之前输入一个用户,这样它就会知道程序是否想继续。问题是while条件的更内部看不到扫描仪之前输入的一行。有什么建议吗?

共有1个答案

罗河
2023-03-14

将字符串more声明置于while循环之外:

`public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String cont = "y";
        String more = null;


        do {

            try{
                System.out.println("Welcome to the Pythagorean Theorm Program!!");
                System.out.println("");
                System.out.println("Choose one of the following:");
                System.out.println("");
                System.out.println("1. A2 + B2 = X");
                System.out.println("2. A2 + X = C2");
                System.out.println("3. X + B2 = C2");

                int choice = input.nextInt();

                switch (choice) {

                    case 1: case1();
                            break;
                    case 2: case2();
                            break;
                    case 3: case3();
                            break;
                }
            }
            catch(Exception e) {
                System.out.println("error");
            }

            System.out.println("Do you want to continue?");
            more = input.next();
        } while (more.equals(cont));



    }`
 类似资料:
  • 从指定范围(0,20)内且为int的用户处获取有效整数的最佳方法是什么。如果他们输入了无效的整数打印输出错误。 我在想这样的事情: 这是正确的还是有更好的方法?

  • 问题内容: 我必须在 while 循环中显示Scanner输入:用户必须插入输入,直到他写下“ quit”为止。因此,我必须验证每个输入以检查他是否写出“ quit”。我怎样才能做到这一点? 这行不通。如何验证每个用户的输入? 问题答案: 问题是nextLine() “使该扫描程序前进到当前行之外”。因此,当您调用该条件并且不保存返回值时,您将丢失用户输入的那一行。对第3行的调用返回另一行。 您可

  • 我需要创建一个简单的游戏,其中创建了一个随机数,用户必须猜测数字输入到扫描仪。如果他们的猜测太高,系统会告诉他们猜测得更低,如果猜测得太低也是一样。 我正在使用while循环,但我不知道如何连续调用扫描器,以便用户可以不断猜测。以下是我到目前为止的代码:

  • 本文向大家介绍MySQL循环语句之while循环测试,包括了MySQL循环语句之while循环测试的使用技巧和注意事项,需要的朋友参考一下 mysql 操作同样有循环语句操作,网上说有3中标准的循环方式: while 循环 、 loop 循环和repeat循环。还有一种非标准的循环: goto。 鉴于goto 语句的跳跃性会造成使用的的思维混乱,所以不建议使用。 这几个循环语句的格式如下: WHI

  • 我开发了一个字符排序器,我想每次字符串排序后提示用户输入一个新的字符串。我遇到的问题是扫描仪一直在扫描用户的第一个输入。如果我使用scanner.next(),它不会计算输入末尾的空白,这不是解决方案。 这是while循环的开始。一旦代码完成,它将再次从“inputtext”开始。

  • 只要给定条件为真,Perl编程语言中的while循环语句就会重复执行目标语句。 语法 (Syntax) Perl编程语言中while循环的语法是 - while(condition) { statement(s); } 这里的statement(s)可以是单个陈述或一个陈述块。 condition可以是任何表达。 当条件为真时,循环迭代。 当条件变为假时,程序控制将立即传递到循环之后的行。