import java.util.Scanner; // Scanner tool is imported.
public class Sales
{
public static void main (String[] args) // Main.
{
Scanner scan = new Scanner(System.in); // Scanner object is instantiated.
String[] name = new String[5]; // First array for names is created.
double[] sales = new double[5]; // Second array for sales is created.
for (int i=0; i<5; i++) { // For loop to ask each question 5 times.
System.out.println ("What is the name of the person?");
name[i] = scan.nextLine();
System.out.println ("How much did he/she sell?");
sales[i] = scan.nextDouble();
}
for (int j=0; j<5; j++) { // loop to print the salesperson and amount of sales.
System.out.println (name[j] + " sold " + sales[j]);aa
}
int sum = 0; // The sum is calculated using a for loop.
for (double k : sales){
sum+=k;
}
double avg = sum / 5; // The average is calculated.
System.out.println ("The average sales is: " + avg);
if (sales[i] >= avg){ // whether or not the person sold greater than average.
System.out.println (name[i] + " sold more than the average sales.");
}
}
}
编译错误:
Sales.java:36: error: cannot find symbol
if (sales[i] >= avg){ // Indicates whether or not the person sold greater than average.
^ symbol: variable i location: class Sales Sales.java:37: error: cannot find symbol
System.out.println (name[i] + " sold more than the average sales.");
^ symbol: variable i location: class Sales 2 errors
我尝试将'i'改为'j'....但这也不起作用。有任何想法吗?感谢。
答案 0 :(得分:4)
基本上发生的事情是你正在使用一个for循环,它在代码的开头声明了一个int i
。但是,当完成此for循环时,int i
现在已经消失。
for (int i=0; i<5; i++) {
System.out.println ("What is the name of the person?");
} // <-- After this your int i is gone
那个int,因为它在for循环中声明,只持续该循环的生命周期。稍后在您的代码中,您尝试使用不再存在的相同int i
。这与将j
更改为j
的原因完全相同。在您到达问题区域时,您声明int [{1}}的循环也已完成。
尝试在问题区域添加另一个for循环,如下所示:
for (int i = 0; i < 5; i++) {
if (sales[i] >= avg){ // whether or not the person sold greater than average.
System.out.println (name[i] + " sold more than the average sales.");
}
}
这将为您提供范围内的变量i
,并且可以按照您尝试的方式使用。
另外,作为旁注,您可能希望更改for循环以使用sales.size
而不是显式数字。如果稍后更改数组的大小,这将使您更容易。
for (int i = 0; i < sales.length; i++) { }
答案 1 :(得分:3)
在这行代码的末尾有两个外来字符需要删除。
System.out.println (name[j] + " sold " + sales[j]);aa
它也抱怨i
,因为在该特定行的范围内没有具有该名称的变量。您之前声明的i
仅在您第一个for循环的持续时间内存在。
一个简单的解决方法是将if语句包装在另一个循环中。你可能还需要一个,因为你试图找出谁卖得超过平均水平:
for (int i = 0; i < sales.length; i++){
if (sales[i] >= avg){ // whether or not the person sold greater than average.
System.out.println (name[i] + " sold more than the average sales.");
}
}
编辑:这与您的问题无关,但在您的循环的后续运行中将跳过您对此人姓名的提示。您可能希望在调用scan.nextLine()
后添加另一个nextDouble()
以使用尾随的换行符。
答案 2 :(得分:1)
当然它找不到它,因为你在for循环之外引用变量“i”。由for(int i = 0; ...)定义的变量仅对for循环可见,而不在其外部。
答案 3 :(得分:0)
System.out.println (name[j] + " sold " + sales[j]);aa
尝试从代码中删除aa。
答案 4 :(得分:0)
System.out.println (name[j] + " sold " + sales[j]);aa
我认为aa
需要删除