选项1:
的“垃圾”值你要在哪里object
所在的存储位置。相反,调用的方法:
System.out.println(object.getAverage(testScores));
System.out.println(object.getHighest(testScores));
我会添加一个修改你的代码,所以它不会打印大量的“最高值是:”
public int getHighest(int[] array) {
String output = new String("");
int highest = array[0];
for(int i = 1; i < array.length; i++) {
if (array[i] > highest)
highest = array[i];
//Removed from here
//System.out.println("The highest score=" + highest);
}
//Moved to here
System.out.println("The highest score=" + highest);
return highest;
}
选项2:
但是,因为您已经在方法中打印了内容,所以我会将它们更改为void
并取消return
语句。具体如下:
public class ArrayOperations {
public void getAverage(int[] array) {
double total = 0;
double average;
for (int index = 0; index < array.length; index++)
total += array[index];
average = total/array.length;
System.out.println("The average is: " + average);
}
public void getHighest(int[] array) {
String output = new String("");
int highest = array[0];
for(int i = 1; i < array.length; i++) {
if (array[i] > highest)
highest = array[i];
}
System.out.println("The highest score=" + highest);
}
}
,并调用方法是这样的:
public class ArrayOperationDriver {
public static void main(String[] args) {
int [] testScores = {80, 90, 58, 75, 85, 45, 68, 72, 95};
ArrayOperations object = new ArrayOperations();
object.getAverage(testScores);
object.getHighest(testScores);
}
}
我想这是做一个更清洁的方式。
方案3:
而且多一个选择这样做会是这样,从你的方法返回的数字,但除去S.o.p从里面他们呼吁。
public class ArrayOperations {
public double getAverage(int[] array) {
double total = 0;
double average;
for (int index = 0; index < array.length; index++)
total += array[index];
average = total/array.length;
return average;
}
public int getHighest(int[] array) {
String output = new String("");
int highest = array[0];
for(int i = 1; i < array.length; i++) {
if (array[i] > highest)
highest = array[i];
}
return highest;
}
}
,并把他们的主要方法中:
public class ArrayOperationDriver {
public static void main(String[] args) {
int [] testScores = {80, 90, 58, 75, 85, 45, 68, 72, 95};
ArrayOperations object = new ArrayOperations();
System.out.println("Average number is: " + object.getAverage(testScores));
System.out.println("Highest number is: " + object.getHighest(testScores));
}
}
编辑
要打印所有号码数组testScores
,你可以做一个简单的for循环或for-each
循环,我使用for-each,但如果你想知道如何使用for,你可以用for。
public class ArrayOperationDriver {
public static void main(String[] args) {
int [] testScores = {80, 90, 58, 75, 85, 45, 68, 72, 95};
ArrayOperations object = new ArrayOperations();
System.out.println("Average number is: " + object.getAverage(testScores));
System.out.println("Highest number is: " + object.getHighest(testScores));
System.out.print("The test scores are: ");
for (int score : testScores)
System.out.print(score + " ");
System.out.println("");
}
}
由于您正在使用输入对象调用'System.out.println',您没有重写'toString()',所以您正在获取“垃圾”值。你也没有调用你在'ArrayOperations'上定义的方法' – mkobit
@tommy你可以检查你的对象的'toString()'方法的Javadoc(它基本上是'Object'类的'toString()'方法)看明白为什么.. –
这些答案都没错;然而,我可能会使这些方法是静态的,因为它们只依赖于输入参数,并且不会修改任何状态(这些将被称为“纯函数”)。 –