【问题标题】:JAVA Error: Utilizing Switch Statements [duplicate]JAVA 错误:使用 Switch 语句 [重复]
【发布时间】:2014-06-21 17:53:14
【问题描述】:

我是编程新手,但遇到了一些错误。当我在 Java 中构建代码时出现此错误,它与 int 和 double 有关。 这是我的代码:

import java.util.Scanner;
import java.text.DecimalFormat;

public class Overloader 
{
    public static void main(String[] args) 
    {
        Scanner k1 = new Scanner(System.in);
        double selection = 0, radius, height;

        do 
        {
            System.out.println("Select the options from [1-3]");
            System.out.println("1- Volume of the Cylinder");
            System.out.println("2- Volume of the Sphere");
            System.out.println("3- Exit");
            selection = k1.nextDouble();

            switch (selection) 
            {
                case 1:
                    System.out.print("Enter radius: ");
                    radius = k1.nextDouble();
                    System.out.print("Enter height: ");
                    height = k1.nextDouble();
                    System.out.printf("Volume = %10.3f%n", getVolume(radius, height));
                    break;
                case 2:
                    System.out.print("Enter radius: ");
                    radius = k1.nextDouble();
                    System.out.printf("Volume = %10.3f%n", getVolume(radius));
                break;
                case 3:
                    System.exit(0);
                default:
                    System.out.println("Incorr... choice!");
            } // end switch
        } while (selection != 3);
    }

    public static double getVolume(double radius, double height) 
    {
        return Math.PI * radius * radius * height;
    }

    public static double getVolume(double radius) 
    {
        return (4.0 / 3.0) * Math.PI * Math.pow(radius, 3);
    }
}

调试器说:

switch (selection) {
        ^
  required: int
  found:    double
1 error
Process completed.

请帮忙,我将不胜感激。 非常感谢。

【问题讨论】:

  • 那里有一个编译器错误。一项基本技能是知道你在说什么程序或什么程序在和你说话。
  • 程序员发明了“缩进”:)

标签: java


【解决方案1】:

你不能开启双重角色。可以参考the language specification #14.11

表达式的类型必须是 char、byte、short、int、Character、Byte、Short、Integer、String 或枚举类型(第 8.9 节),否则会发生编译时错误。

在您的情况下,您需要一个 int,所以只需使用:

int selection = k1.nextInt();

【讨论】:

    【解决方案2】:

    开关不能基于双精度或浮点数。 根据数据范围,你可能需要替换

    selection = k1.nextDouble();
    

    selection = k1.nextInt;
    

    (并且选择被声明为 int,由 Ingo 建议)

    【讨论】:

    • 为此,selection也需要声明为int。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多