【发布时间】:2014-07-23 17:14:20
【问题描述】:
所以我的程序的目的是为 5 个销售人员创建一个数组。提示用户输入每个人的总销售额。然后,我需要打印总和、平均、最低销售额和最高销售额。我可以得到平均值,即所有销售额的总和,并设法打印出数组的最大值,但我需要说明,例如,销售人员 2 的销售额为 50,000 美元。我现在所拥有的是“50,000 有 50,000 美元”,如果这样的话。所以数组的值 3(销售人员 2,因为我没有包括销售人员 0)是 50,000。我的数组:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
final int SALESPEOPLE = 6;
int[] sales = new int[SALESPEOPLE];
int sum;
for (int i = 1; i < sales.length; i++) {
System.out.print("Enter sales for salesperson " + i + ": ");
sales[i] = scan.nextInt();
}
}
以及获取最大值
for (int i = 1; i < sales.length; i++) {
System.out.println(i + " \t" + sales[i]);
sum += sales[i];
}
System.out.println("The highest sale was");
int maxValue = getMaxValue(sales);
int maxValueName = getMaxValueName(sales);
System.out.println("Name: " + maxValueName + "Sale: " + maxValue);
System.out.println("The lowest sale was");
int minValue = getMinValue(sales);
System.out.println(minValue);
最大值
public static int getMaxValue(int[] array) {
int maxValue = array[1];
for (int i = 1; i < array.length; i++) {
if (array[i] > maxValue) {
maxValue = array[i];
}
}
return maxValue;
}
public static int getMaxValueName(int[] array) {
int maxValueName = array[1];
for (int i = 1; i < array.length; i++) {
if (array[i] > maxValueName) {
maxValueName = array[i];
}
}
return maxValueName;
}
【问题讨论】:
-
由于
getMaxValueName的代码与getMaxValue相同,只是改变了一些变量名,所以它当然会返回相同的结果。 -
事实上,这里最初显示的代码中没有任何地方可以存储销售人员的姓名。程序不可能打印出它从未有过的数据。
-
问题是我需要打印出数组中销售额最大的销售员
-
@KieranHughes 如果您希望
getMaxValueName返回具有最高值的销售人员的“姓名”或 ID 号,您必须修复它。现在,您设置了maxValueName = array[i],这意味着maxValueName将保持最高值(称它为Name并不能使编译器神奇地找到名称)。所以如果你想让它成为一个名字而不是一个值,你会如何改变方法? -
改方法getMaxValueName?