为什么代码不起作用?

时间:2017-03-13 14:59:14

标签: java java.util.scanner

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;
    }
}

}

正如你所看到的,我正在尝试创建一个公式计算器(注意:我只是一个初学者)并且它似乎一直工作到最后一个案例'。最后一个案例"气缸容量"在控制台中键入时无法识别。所有其他情况都运行良好,我没有看到"气缸容量"和其他的。请帮忙!

3 个答案:

答案 0 :(得分:2)

那是你用的

 formula = form.next();

这只能读到单词的结尾而不是空格 所以当你放入" Cylinder volume"它只读取Cylinder。

如果将其更改为

,它将起作用
 formula = form.nextLine();

答案 1 :(得分:0)

锆石有解决方案。但是,在默认情况下打印formula设置为:

也可能会有所帮助
   default:
        System.out.println("Option: " + formula + " not recognized");
        break;

做这种事情将有助于你将来的理智。

答案 2 :(得分:0)

尝试

{{1}}

请记住,扫描仪不适用于非ascii字符。

另一个测试可能是在交换机之前打印'formula',并检查其内容。