我是一名学生,只是学习班级和方法。我收到一个错误(第30行 - Saving = pr * discount / 100)"找不到符号"。我明白我的变量折扣超出了范围,但我无法弄清楚如何纠正这个问题。我按照提供给我的说明,但它仍然无法正常工作。我已经在教科书中发现了一些错别字,所以有什么遗漏?或者是我对大括号的定位?
import java.util.Scanner; // Allows for user input
public class ParadiseInfo2
{
public static void main(String[] args)
{
double price; // Variable for minimum price for discount
double discount; // Variable for discount rate
double savings; // Scanner object to use for keyboard input
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter cutoff price for discount >> ");
price = keyboard.nextDouble();
System.out.print("Enter discount rate as a whole number >> ");
discount = keyboard.nextDouble();
displayInfo();
savings = computeDiscountInfo(price, discount);
System.out.println("Special this week on any service over " + price);
System.out.println("Discount of " + discount + " percent");
System.out.println("That's a savings of at least $" + savings);
}
public static double computeDiscountInfo(double pr, double dscnt)
{
double savings;
savings = pr * discount / 100;
return savings;
}
public static void displayInfo()
{
System.out.println("Paradise Day Spa wants to pamper you.");
System.out.println("We will make you look good.");
}
}
答案 0 :(得分:1)
您的代码是正确的 - 当您需要范围变量dscnt时,您只需调用超出范围变量折扣。试试这个:
public static double computeDiscountInfo(double pr, double dscnt) {
double savings;
savings = pr * dscnt / 100;
return savings;
}
答案 1 :(得分:1)
问题是由于您在问题中提到的,变量discount
超出了范围。让我们来看看为什么。
在原始代码中,方法computeDiscountInfo(double pr, double dscnt)
被传递给参数:双重标记为pr,另一个双重标记为dscnt。你的方法只会知道这两个参数,而不会知道它们之外发生的任何事情。 (这有一些例外情况,例如静态变量或从父母传来的变量。但是,这些很可能超出了你目前学习的范围。我确定你他们很快就会在学校报道。)
由于变量discount
是在main()
方法中声明的,因此您的computeDiscountInfo(double pr, double dscnt)
方法无法知道它是否存在。当您使用此方法时,可以将discount
变量作为要使用的参数传递给您(就像您在代码中使用savings = computeDiscountInfo(price, discount);
那样)然后该方法将应用{{1}的值它在方法声明中定义的自己的局部变量discount
。这是该方法将知道和使用的变量。
现在,让我们回顾一下你的方法:
dscnt
在此方法中,您将变量称为public static double computeDiscountInfo(double pr, double dscnt)
{
double savings;
savings = pr * discount / 100;
return savings;
}
,而不是方法参数中声明的本地名称discount
。该方法不了解dscnt
的含义。它可以在这个地方传递任何两倍。通过将方法中的单词discount
更改为discount
,该方法将能够了解您正在处理的内容并正确使用该值。
dscnt
我希望这对你有意义,如果没有,请告诉我。局部变量和变量范围的概念是面向对象编程基础的关键部分。