汇总列的逻辑错误[Java]

时间:2016-04-10 15:32:08

标签: java oop object multidimensional-array

这与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 

现在我遇到了上一篇文章的相反问题。一切格式正确,但它没有正确计算。这是我对整个代码的唯一问题。

2 个答案:

答案 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()