【问题标题】:incompatible types: unexpected return value不兼容的类型:意外的返回值
【发布时间】:2017-10-06 04:21:59
【问题描述】:

我是 java 新手,正在尝试返回要在最后一行打印出的佣金值。但我不断收到不兼容的类型:意外返回值错误。

  import java.util.Scanner;

    public class retail {
    public static void main (String[] args){

    char code;
    double commission;
    String enumber;
    double retail_price=0;
    Scanner scan = new Scanner(System.in);
    System.out.println("Enter employee number: ");
    enumber= scan.nextLine();
    System.out.println("Enter retail price: ");
    retail_price= scan.nextDouble();
    System.out.println("Enter code:");
    code=scan.next().charAt(0);
    if (code == 'A'){ commission = (retail_price/100)*6;}
    else if (code == 'a') {commission = (retail_price/100)*6;}
    else if (code == 'B') {commission = (retail_price/100)*8;}
    else if (code == 'b') {commission = (retail_price/100)*8;}
    else if (code == 'C') {commission = (retail_price/100)*10;}
    else if (code == 'c') {commission = (retail_price/100)*10;}
    else{System.out.println("Invalid code");}
    return commission;
    System.out.println("Employee number: "+enumber);
    System.out.println("Retail price: "+retail_price);
    System.out.println("Commission: "+commission);
    }
}

【问题讨论】:

  • 你从main方法返回一个值,main方法不返回值而且它的返回类型是void。
  • 你不需要返回一个值,程序只能以这种方式正常工作。

标签: java


【解决方案1】:

您不需要在 main 方法中返回值。申报时只需将佣金初始化为0即可。

double commission=0;
String enumber;
double retail_price=0;
Scanner scan = new Scanner(System.in);
System.out.println("Enter employee number: ");
enumber= scan.nextLine();
System.out.println("Enter retail price: ");
retail_price= scan.nextDouble();
System.out.println("Enter code:");
code=scan.next().charAt(0);
if (code == 'A'){ commission = (retail_price/100)*6;}
else if (code == 'a') {commission = (retail_price/100)*6;}
else if (code == 'B') {commission = (retail_price/100)*8;}
else if (code == 'b') {commission = (retail_price/100)*8;}
else if (code == 'C') {commission = (retail_price/100)*10;}
else if (code == 'c') {commission = (retail_price/100)*10;}
else{System.out.println("Invalid code");}
System.out.println("Employee number: "+enumber);
System.out.println("Retail price: "+retail_price);
System.out.println("Commission: "+commission);
}}

【讨论】:

  • 我使用它并得到一个错误“线程“main”中的异常 java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Scanner.java:1540) atretail.main (retail.java:11)"
  • 这个错误是因为这个帖子缺少import语句import java.util.Scanner;在你的班级声明之上
【解决方案2】:

你在主方法中返回。所以它显示错误。如果你想返回值,你应该像这样使用,

private static double setValue(char code,double commission,double retail_price){
        if (code == 'A'){ commission = (retail_price/100)*6;}
        else if (code == 'a') {commission = (retail_price/100)*6;}
        else if (code == 'B') {commission = (retail_price/100)*8;}
        else if (code == 'b') {commission = (retail_price/100)*8;}
        else if (code == 'C') {commission = (retail_price/100)*10;}
        else if (code == 'c') {commission = (retail_price/100)*10;}
        else{System.out.println("Invalid code");}
        return commission;
    }


        public static void main(String ...args){
            char code;
            double commission = 0;
            String enumber;
            double retail_price=0;
            Scanner scan = new Scanner(System.in);
            System.out.println("Enter employee number: ");
            enumber= scan.nextLine();
            System.out.println("Enter retail price: ");
            retail_price= scan.nextDouble();
            System.out.println("Enter code:");
            code=scan.next().charAt(0);
            commission = setValue(code, commission, retail_price);
            System.out.println("Employee number: "+enumber);
            System.out.println("Retail price: "+retail_price);
            System.out.println("Commission: "+commission);

        }

注意: 这个程序不需要返回值。你可以在 main 方法中做你的事情。

【讨论】:

    【解决方案3】:

    已修复的问题: 类名不大写 佣金从未初始化 返回删除

    import java.util.Scanner;
    // Classes should allways be capitalized
    public class Retail
    {
        public static void main (String[] args)
        {
    
            char code;
            double commission = 0;
            String enumber;
            double retail_price=0;
            Scanner scan = new Scanner(System.in);
            System.out.println("Enter employee number: ");
            enumber= scan.nextLine();
            System.out.println("Enter retail price: ");
            retail_price= scan.nextDouble();
            // added user guidance of whats expected
            System.out.println("Enter code: A,B,C");
            code=scan.next().charAt(0);
            if (code == 'A'){ commission = (retail_price/100)*6;}
            else if (code == 'a') {commission = (retail_price/100)*6;}
            else if (code == 'B') {commission = (retail_price/100)*8;}
            else if (code == 'b') {commission = (retail_price/100)*8;}
            else if (code == 'C') {commission = (retail_price/100)*10;}
            else if (code == 'c') {commission = (retail_price/100)*10;}
            else{System.out.println("Invalid code");}
            System.out.println("Employee number: "+enumber);
            System.out.println("Retail price: "+retail_price);
            System.out.println("Commission: "+commission);
        }
    }
    

    【讨论】:

    • 我这样做了,但它给了我这个错误“线程“主”java.util.NoSuchElementException 中的异常:Retail 的 java.util.Scanner.nextLine(Scanner.java:1540) 中找不到行.main(Retail.java:14)"
    • 您必须删除您的retail.java 并将其重新保存为Retail.java。
    猜你喜欢
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多