这与this post非常相似,只是代码现在是对象的一部分而不是方法。
同样,这应该是它的样子:
输入3行4列:
1 2 3 4
5 6 7 8
9 10 11.2 12.5您输入了:
1.0 2.0 3.0 4.0
5.0 6.0 7.0 8.0
9.0 10.0 11.2 12.5总和是:
15.0 18.0 21.2 24.5
这是我的代码:
else if (choice == 2) {
// Prompt user
System.out.println("You Selected Sum Columns");
// Enter array values
double[][] myList = new double[3][4];
double[][] userList = new double[3][4];
feature2 f2 = new feature2();
f2.run(myList, input);
f2.getInput(userList);
}
和
import java.util.Scanner;
public class feature2 {
public void run(double[][] myList,Scanner input) {
// 2D arrays are like spreadsheets ROW and Columns
System.out.println("Enter " + myList.length + " rows and " + myList[0].length + " columns: ");
for (int i = 0; i < myList.length; i++){
for (int j = 0; j < myList[0].length; j++){
myList[i][j] = input.nextDouble();
}
}
}
public void getInput(double[][] userList) {
System.out.println("You Entered:");
for (int i = 0; i < userList.length; i++) {
for (int j = 0; j < userList[0].length; j++) {
// chars are just ints!
System.out.print(userList[i][j] + " ");
}
// every row
System.out.print("\n");
}
System.out.println("\n The sums are:");
for (int column = 0; column < userList[0].length; column++) {
double total = 0.0;
for (int row = 0; row < userList.length; row++){
// sum column
total += userList[row][column];
}
System.out.print(total + " ");
}
// space for formating
System.out.print("\n");
}
}
这就是发生的事情:
Enter 1 Random 2D Chars
Enter 2 Sum Columns
Enter 3 Identical Arrays
Any other input will exit2
You Selected Sum Columns
Enter 3 rows and 4 columns:
1 2 3 4
5 6 7 8
9.1 10.2 11.3 12.9
You Entered:
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
The sums are:
0.0 0.0 0.0 0.0
现在我遇到了上一篇文章的相反问题。一切格式正确,但它没有正确计算。这是我对整个代码的唯一问题。
答案 0 :(得分:2)
好吧,你首先实例化2个空数组,然后写入一个数组,最后从第二个数组读取(这是空的 - 实际上填充了默认的双值,即0.0
)。
基本上,而不是:
double[][] myList = new double[3][4];
double[][] userList = new double[3][4];
feature2 f2 = new feature2();
f2.run(myList, input);
f2.getInput(userList);
尝试:
double[][] myList = new double[3][4];
feature2 f2 = new feature2();
f2.run(myList, input);
f2.getInput(myList);
答案 1 :(得分:2)
您要求用户填充数组,然后显示该数组。所以你只需要一个阵列,对吧?
然而,您的代码中有两个数组:myList
,由用户填充,userList
,显示。
double[][] myList = new double[3][4];
double[][] userList = new double[3][4];
feature2 f2 = new feature2();
// ask the user to fill myList
f2.run(myList, input);
// but display userList
f2.getInput(userList);
请注意,您的命名非常混乱。从用户获取输入的方法名为run()
,显示该数组的用户名为... getInput()
。