Java 大括号缺少返回语句?

Java 大括号缺少返回语句?,java,swing,if-statement,Java,Swing,If Statement,我目前正在编写一个程序,其中我有一系列方法,所有方法的设置基本相同。如果给定i=1,则返回产品价格乘以订购数量。否则,他们只返回订购的数量。然而,每当我试图编译它时,编译器都会说括号中缺少返回语句。我已经对代码进行了多次检查,没有发现语法中有任何明显的错误。有人猜测为什么会发生这种情况吗 谢谢你的帮助 有关资料来源: private class ButtonListener implements ActionListener { public void actionPerform

我目前正在编写一个程序,其中我有一系列方法,所有方法的设置基本相同。如果给定i=1,则返回产品价格乘以订购数量。否则,他们只返回订购的数量。然而,每当我试图编译它时,编译器都会说括号中缺少返回语句。我已经对代码进行了多次检查,没有发现语法中有任何明显的错误。有人猜测为什么会发生这种情况吗

谢谢你的帮助

有关资料来源:

private class ButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent e)
        {
            if (e.getSource() == switchCard)
            {
                cl.show(infoPanel, (String)candyList.getSelectedValue());
            }

        if (e.getSource() == checkoutButton)
        {
            double acidPops = acidPopsTotal(1);
            double bertieBotts = bertieBottsTotal(1);
            double bloodPops = bloodPopsTotal(1);
            double cauldronCakes = cauldronCakesTotal(1);
            double charmChoc = charmChocTotal(1);
            double chocoballs = chocoballsTotal(1);
            double chocCauldrons = chocCauldronsTotal(1);
            double chocFrogs = chocFrogsTotal(1);
            double chocWands = chocWandsTotal(1);
            double roachClusters = roachClustersTotal(1);
            double crystalPineapple = crystalPineappleTotal(1);
            double droobleGum = droobleGumTotal(1);
            double explodeBonbons = explodeBonbonsTotal(1);
            double fizzWhiz = fizzWhizTotal(1);
            double iceMice = iceMiceTotal(1);
            double jellySlugs = jellySlugsTotal(1);
            double liquorWands = liquorWandsTotal(1);
            double pepImpts = pepImpsTotal(1);
            double pinkIce = pinkIceTotal(1);
            double shockChoc = shockChocTotal(1);
            double spindleSpiders = spindleSpidersTotal(1);
            double quills = quillsTotal(1);
            double wizochoc = wizochocTotal(1);
        }
    }

    double acidPopsTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (5.95* (Integer.parseInt(acidPopsTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(acidPopsTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double bertieBottsTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (16.95 * (Integer.parseInt(bertieBottsTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(bertieBottsTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double bloodPopsTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (5.95 * (Integer.parseInt(bloodPopsTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(bloodPopsTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double cauldronCakesTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (14.95 * (Integer.parseInt(cauldronCakesTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(cauldronCakesTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double charmChocTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (5.95 * (Integer.parseInt(charmChocTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(charmChocTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double chocoballsTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (9.95 * (Integer.parseInt(chocoballsTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(chocoballsTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double chocCauldronsTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (14.95 * (Integer.parseInt(chocCauldronsTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(chocCauldronsTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double chocFrogsTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (14.95 * (Integer.parseInt(chocFrogsTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(chocFrogsTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double chocWandsTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (9.95 * (Integer.parseInt(chocWandsTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(chocWandsTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double roachClustersTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (5.95 * (Integer.parseInt(roachClustersTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(roachClustersTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double crystalPineappleTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (9.95 * (Integer.parseInt(crystalPineappleTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(crystalPineappleTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double droobleGumTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (2.95 * (Integer.parseInt(droobleGumTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(droobleGumTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double explodeBonbonsTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (9.95 * (Integer.parseInt(explodeBonbonsTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(explodeBonbonsTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double fizzWhizTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (9.95 * (Integer.parseInt(fizzWhizTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(fizzWhizTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double iceMiceTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (5.95 * (Integer.parseInt(iceMiceTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(iceMiceTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double jellySlugsTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (2.95 * (Integer.parseInt(jellySlugsTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(jellySlugsTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double liquorWandsTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (9.95 * (Integer.parseInt(liquorWandsTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(liquorWandsTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double pepImpsTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (4.95 * (Integer.parseInt(pepImpsTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(pepImpsTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double pinkIceTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (4.95 * (Integer.parseInt(pinkCocoIceTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(pinkCocoIceTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double shockChocTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (4.95 * (Integer.parseInt(shockChocTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(shockChocTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double spindleSpidersTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (4.95 * (Integer.parseInt(spindleSpidersTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(spindleSpidersTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double quillsTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (1.95 * (Integer.parseInt(sugarQuillsTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(sugarQuillsTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }

    double wizochocTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (5.95 * (Integer.parseInt(wizochocTF.getText())));
            }
            catch (NumberFormatException e) {}
        }
        else
        {
            try
            {
                return Integer.parseInt(wizochocTF.getText());
            }
            catch (NumberFormatException e) {}
        }
    }
}
错误:

C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:490: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:510: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:530: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:550: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:570: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:590: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:610: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:630: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:650: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:670: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:690: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:710: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:730: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:750: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:770: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:790: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:810: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:830: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:850: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:870: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:890: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:910: error: missing return statement
        }
        ^
C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java:930: error: missing return statement
        }
        ^
Note: C:\Users\Sam\Desktop\Java\4H 2012\ClientApp.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
23 errors

由于您的try-catch阻塞,无法保证退货

您可能希望返回一个0或-1的哨兵来显示这一点

一个可能更清楚地说明这一点的例子:

double acidPopsTotal(int i) {
    if (i == 1) {
        try {
            return (5.95* (Integer.parseInt(acidPopsTF.getText())));
        } catch (NumberFormatException e) {
            //Missing return - compile error
        }
    } else {
        try {
            return Integer.parseInt(acidPopsTF.getText());
        } catch (NumberFormatException e) {
            //Missing return - compile error
        }
    }
}

由于您的try-catch阻塞,无法保证退货

您可能希望返回一个0或-1的哨兵来显示这一点

一个可能更清楚地说明这一点的例子:

double acidPopsTotal(int i) {
    if (i == 1) {
        try {
            return (5.95* (Integer.parseInt(acidPopsTF.getText())));
        } catch (NumberFormatException e) {
            //Missing return - compile error
        }
    } else {
        try {
            return Integer.parseInt(acidPopsTF.getText());
        } catch (NumberFormatException e) {
            //Missing return - compile error
        }
    }
}

在Java中,如果通过不包含返回或抛出的非void函数至少存在一条路径,则这是编译时错误。因为您捕获了一个抛出的异常,并且对其不做任何处理,所以在该路径中不会返回任何内容。因此,出现了错误


旁白:您可能想考虑一个程序结构,在其中抛出异常而不是吃它。(同样,这可能只是示例代码。)

在Java中,如果通过不包含返回或抛出的非void函数至少存在一条路径,则这是编译时错误。因为您捕获了一个抛出的异常,并且对其不做任何处理,所以在该路径中不会返回任何内容。因此,出现了错误


旁白:您可能想考虑一个程序结构,在其中抛出异常而不是吃它。(同样,这可能只是示例代码。)

我相信TheZ所说的是正确的,如果发现错误,您可能不会返回任何内容。试试像

 double chocFrogsTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (14.95 * (Integer.parseInt(chocFrogsTF.getText())));
            }
            catch (NumberFormatException e) {return -1.;}
        }
        else
        {
            try
            {
                return Integer.parseInt(chocFrogsTF.getText());
            }
            catch (NumberFormatException e) {return -1.;}
        }
    }

然后,每当返回小于1的值时,就知道解析错误。

我相信z所说的是正确的,如果发现错误,就有可能不返回任何内容。试试像

 double chocFrogsTotal(int i)
    {
        if (i == 1)
        {
            try
            {
                return (14.95 * (Integer.parseInt(chocFrogsTF.getText())));
            }
            catch (NumberFormatException e) {return -1.;}
        }
        else
        {
            try
            {
                return Integer.parseInt(chocFrogsTF.getText());
            }
            catch (NumberFormatException e) {return -1.;}
        }
    }

然后,每当返回小于1的值时,就知道解析错误。

您的
return
语句嵌套在
try中。。。catch
块,如果它们抛出错误而不返回该怎么办?没有返回值,这就是您收到警告的原因。在函数的末尾输入一个默认的返回值。啊,我们开始了。非常感谢你!请修改代码样式和缩进。它需要一致和统一。同一级别的代码必须缩进相同的数量(我使用2-3个空格)。否则你会把我们弄糊涂,更重要的是,你会把你自己或者你未来的自己弄糊涂。我的压痕怎么会不一致呢?我相信代码可能只是一个标签,因为这就是它被复制到问题中的原因,但在我的实际源代码中,这一切都很好。提示:如果你在代码中看到大量重复,那么你的设计可能是错误的。尝试创建适用于任何产品和数量的单一功能。如果您在代码中看到很多常量,那么您可能需要使用诸如文件之类的资源。您的
return
语句嵌套在
try。。。catch
块,如果它们抛出错误而不返回该怎么办?没有返回值,这就是您收到警告的原因。在函数的末尾输入一个默认的返回值。啊,我们开始了。非常感谢你!请修改代码样式和缩进。它需要一致和统一。同一级别的代码必须缩进相同的数量(我使用2-3个空格)。否则你会把我们弄糊涂,更重要的是,你会把你自己或者你未来的自己弄糊涂。我的压痕怎么会不一致呢?我相信代码可能只是一个标签,因为这就是它被复制到问题中的原因,但在我的实际源代码中,这一切都很好。提示:如果你在代码中看到大量重复,那么你的设计可能是错误的。尝试创建适用于任何产品和数量的单一功能。如果您在代码中看到很多常量,那么您可能需要使用诸如文件之类的资源来代替。我并不真正担心处理异常。这是为一个公平的项目,我将介绍它。我不会给出会触发异常的输入,所以我没有理由对它做任何事情。如果这是为了实际生产和分销,那么是的,我肯定会做一些例外。如果我有时间,我可以回去做一些例外的事情,但不是现在。我理解。我的建议是根本不使用try-catch块,只允许抛出numberformatceptions。你的代码将会越来越短,越来越干净。既然你不做任何有例外的事情,那就是你最好的策略。我真的不担心做任何有例外的事情。这是为一个公平的项目,我将介绍它。我不会给出会触发异常的输入,所以我没有理由对它做任何事情。如果这是为了实际生产和分销,那么是的,我肯定会做一些例外。如果我有时间,我可以回去做一些例外的事情,但不是现在。我理解。我的建议是根本不使用try-catch块,只允许抛出numberformatceptions。你的代码将会越来越短,越来越干净。因为你没有做任何例外的事情,这是你最好的策略。