Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';代码不起作用吗?_Java_Java.util.scanner - Fatal编程技术网

Java 为什么';代码不起作用吗?

Java 为什么';代码不起作用吗?,java,java.util.scanner,Java,Java.util.scanner,正如你所看到的,我正在尝试创建一个公式计算器(注:我只是一个乞丐),它似乎一直工作到最后一个“案例”。在控制台中键入最后一个案例“气缸容积”时,无法识别。所有其他的情况都很好,我看不出“汽缸容积”和其他情况有什么区别。请帮忙 那是你用过的 import java.util.Scanner; public class Formula { public static void main(String[] args) { Scanner numIn = new Scanner(Syste

正如你所看到的,我正在尝试创建一个公式计算器(注:我只是一个乞丐),它似乎一直工作到最后一个“案例”。在控制台中键入最后一个案例“气缸容积”时,无法识别。所有其他的情况都很好,我看不出“汽缸容积”和其他情况有什么区别。请帮忙

那是你用过的

import java.util.Scanner;

public class Formula {

public static void main(String[] args) {

    Scanner numIn = new Scanner(System.in);
    Scanner form = new Scanner(System.in);

    double r, d, h, a;
    String formula;

    System.out.println("Please state which circle formula you want to use:");
    System.out.println("Circumference");
    System.out.println("Area");
    System.out.println("Cylinder volume");

    formula = form.next();

    switch (formula) {
    case "Circumference":
        System.out.println("Please state the diameter: ");
        d = numIn.nextDouble();

        System.out.println("The circumference is:");
        System.out.println(3.14 * d);
        break;

    case "Area":
        System.out.println("Please state the radius: ");
        r = numIn.nextDouble();

        System.out.println("The area is:");
        System.out.println(3.14 * (r * r));
        break;

    case "Cylinder volume":
        System.out.println("State the area of the base: ");
        a = numIn.nextDouble();
        System.out.println("State the height of the cylinder: ");
        h = numIn.nextDouble();
        System.out.println("the volume is: ");
        System.out.println(a * h);
        break;

    default:
        System.out.println("Option not recognized");
        break;
    }
}

}
这只会读到单词的末尾,而不会读到空格 所以当你们把“汽缸容积”放进去时,它只读汽缸容积

如果你把它改成

 formula = form.next();

锆石有这种溶液。但是,在默认情况下打印
公式设置为:

 formula = form.nextLine();
做这类事情将有助于你在未来保持理智

试试看

   default:
        System.out.println("Option: " + formula + " not recognized");
        break;
请记住,扫描仪不能处理非ascii字符


另一个测试可能是在切换前打印“公式”,并检查其内容。

使用
form.nextLine()
而不是
form.next()
,否则您只能得到第一个单词(“圆柱体”)。“为什么代码不起作用”是一个糟糕的标题。它可能适用于大约90%以上的问题。你可能想说得更具体些。我想你需要知道答案。对于未来的需要,请亲提示:让用户只输入一个菜单项编号。没有人想输入“气缸容积”。他们想输入“3”。。。
Scanner form = new Scanner(System.in, "UTF-8").useDelimiter("\n");