将方法移动到另一个方法java

时间:2014-02-04 02:34:52

标签: java

import java.util.Scanner;
public class Hw4Part4 {

    public static void main(String[] args){
    Scanner sc = new Scanner(System.in);

//Ask for the diners’ satisfaction level using these ratings: 1 = Totally satisfied, 2 = Satisfied,
//3 = Dissatisfied.
    System.out.println("Satisfacion leve: ");
    int satisfactionNumber= sc.nextInt();

//Ask for the bill subtotal (not including the tip)
    System.out.println("What is the bill subtotal: ");
    double subtotal= sc.nextInt();  

//Report the satisfaction level and bill total.
   System.out.println("The satisfaction level is: "+ satisfactionLevel(satisfactionNumber));

System.out.println("The bill total is: " + getBillTotal(tipPercentage, subtotal));

    }


public static String satisfactionLevel(int satisfactionNumber){

String satisfactionL = "";

if (satisfactionNumber == 1){
    satisfactionL ="Totally-satisfied"; 
}

if (satisfactionNumber == 2){
   satisfactionL = "Satisfied";
}
if (satisfactionNumber == 3){
   satisfactionL = "Dissatisfied";
}
return satisfactionL;

}

//This method takes the satisfaction number and returns the percentage of tip to be 
//calculated based on the number.
//This method will return a value of 0.20, 0.15, or 0.10

public static double getPercentage(int satisfactionNumber){


double getPercentage = 0;
if (satisfactionNumber ==1){
    getPercentage = 0.20;
}
if (satisfactionNumber ==2){
    getPercentage = 0.15;
}
if (satisfactionNumber ==3){
    getPercentage = 0.10;
}
return getPercentage;
}   


public static double getBillTotal(double tipPercentage, double subtotal){

double totalWithTip= (subtotal + ( getPercentage(satisfactionNumber) * subtotal));
return totalWithTip;

}
    }   

我在最后一个方法上遇到问题,整个代码如上所示。

它说我试图使用前一种方法的部分有错误。

我需要获得前一种方法计算的百分比。

2 个答案:

答案 0 :(得分:0)

很难说,但我认为你需要删除空格:

double totalWithTip = subtotal + (getPercentage(satisfactionNumber) * subtotal);
return totalWithTip;

此代码假定一个变量:

int satisfactionNumber;

和方法:

double getPercentage(int satisfactionNumber) {
    // some impl
}

答案 1 :(得分:0)

在这部分代码中:

public static double getBillTotal(double tipPercentage, double subtotal){
    double totalWithTip= (subtotal + ( getPercentage(satisfactionNumber) * subtotal));
    return totalWithTip;
}

你称之为这个方法:

getPercentage(satisfactionNumber)

然而,这个变量:

satisfactionNumber

此方法的范围不存在。您应该将此变量传递给方法,如下所示:

public static double getBillTotal(double tipPercentage, double subtotal, int satisfactionNumber){
    double totalWithTip= (subtotal + ( getPercentage(satisfactionNumber) * subtotal));
    return totalWithTip;
}

因此,当您在main中调用该方法时,请将其传递给:

System.out.println("The bill total is: " + getBillTotal(tipPercentage, subtotal, satisfactionNumber));
  

tipPercentage无法解析为变量

您传递的任何变量都必须创建。因此,当您执行上述操作时,请确保已将所有变量记录为:

double tipPercentage, subtotal, satisfactionNumber;
//now set these three variables with a value before passing it to the method
System.out.println("The bill total is: " + getBillTotal(tipPercentage, subtotal, satisfactionNumber));