如何返回在switch语句Java中找到的值

问题描述 投票:2回答:10

如何将在该switch语句中找到的值返回给该类的其余部分以供使用(我想在该switch语句之外使用oneTotal,twoTotal等)?这是switch语句的代码:

        switch(itemNo){
        case 1:
            double oneTotal = 2.98 * userQuantity;
            return oneTotal;
        case 2:
            double twoTotal = 4.50 * userQuantity;
            return twoTotal;
        case 3:
            double threeTotal = 9.98 * userQuantity;
            return threeTotal;
        case 4:
            double fourTotal = 4.49 * userQuantity;
            return fourTotal;
        case 5:
            double fiveTotal = 6.87 * userQuantity;
            return fiveTotal;
        }

在switch语句的外面,我希望一旦用户停止使用switch语句(我将它放在while循环中),然后将FiveTotal的总数相加,然后希望将五个总数返回以在main方法中使用类的内容(switch语句在其自己的double,nonvoid类中,因此它可以返回值)。

java switch-statement return double user-input
10个回答
4
投票

尝试在switch语句之前定义一个称为double类型的结果的变量,例如:

double result = 0.;
switch(itemNo){
    case 1: 
        result = 2.98 * userQuantity; 
        break;
     ....
}
return result;

2
投票

该方法必须只包含必要的代码才能完成其工作。该方法的使用者必须担心如何处理数据。

对于您的情况,包含此switch的方法必须只关心基于参数和方法的客户端返回正确的值,例如public static void main(String[] args)必须评估该方法执行结果的处理方式。

这是您的情况的工作方式:

public static double yourMethod(int itemNo) {
    double result = 0;
    switch(itemNo) {
        case 1:
            result = 2.98 * userQuantity;
            break;
        case 2:
            result = 4.50 * userQuantity;
            break;
        case 3:
            result = 9.98 * userQuantity;
            break;
        case 4:
            result = 4.49 * userQuantity;
            break;
        case 5:
            result = 6.87 * userQuantity;
            break;
    }
    return result;
}

public static void main(String[] args) {
    //some code...
    double grandTotal = 0;

    //probably this may be in a loop or something similar
    int itemNo = ...;
    //this method is consumer/client of yourMethod, directly noted by line below
    double someValue = yourMethod(itemNo);
    grandTotal += someValue;

    //more code...
    //do something with the result e.g. print it so the user may read it
    System.out.println("Grand total: " + grandTotal);
}

2
投票

您可以在switch语句之外创建一个变量,并且对于其余类可见,以跟踪返回值:

public double sumFives = 0; //global variable
/* some codes */
switch(itemNo){
    case 1:
        double oneTotal = 2.98 * userQuantity;
        return oneTotal;
    case 2:
        double twoTotal = 4.50 * userQuantity;
        return twoTotal;
    case 3:
        double threeTotal = 9.98 * userQuantity;
        return threeTotal;
    case 4:
        double fourTotal = 4.49 * userQuantity;
        return fourTotal;
    case 5:
        double fiveTotal = 6.87 * userQuantity;
        sumFives += fiveTotal;
        return fiveTotal;
    }
}

在那里,您可以在switch语句后访问总和。如果要跟踪每个单独的返回值,只需使用ArrayList。

希望这会有所帮助:)


0
投票

在switch语句的顶部定义一个变量,以便在switch范围内可见。然后在每种情况下将您的值分配给该变量。然后作为最后一行返回您分配的变量。]​​>


0
投票
    double returnValue;
    switch(itemNo){
    case 1:
        double oneTotal = 2.98 * userQuantity;
        returnValue = oneTotal;
        break;
    case 2:
        double twoTotal = 4.50 * userQuantity;
        returnValue = twoTotal;
        break;
    case 3:
        double threeTotal = 9.98 * userQuantity;
        returnValue = threeTotal;
        break;
    case 4:
        double fourTotal = 4.49 * userQuantity;
        returnValue = fourTotal;
        break;
    case 5:
        double fiveTotal = 6.87 * userQuantity;
        returnValue = fiveTotal;
        break;
    }
    return returnValue; 

0
投票

以下应该起作用:


0
投票
double value = 0.0;
switch(itemNo){
     case 1:
        double oneTotal = 2.98 * userQuantity;
        value = oneTotal;
        break;
     case 2:
        double twoTotal = 4.50 * userQuantity;
        value = twoTotal;
        break;
     case 3:
        double threeTotal = 9.98 * userQuantity;
        value = threeTotal;
        break;
      case 4:
        double fourTotal = 4.49 * userQuantity;
        value = fourTotal;
      case 5:
        double fiveTotal = 6.87 * userQuantity;
        value = fiveTotal;
        break;
          }
return value;

0
投票

我不确定您要在其中使用该实现。...但是看来您处在正确的轨道上。


0
投票

根据您想做什么,有两种方法可以解决此问题。首先,如果只想增加总和,则可以在函数外部定义一个变量并继续增加它。


0
投票

在Java 14上,您可以使用

© www.soinside.com 2019 - 2024. All rights reserved.