Как я могу сделать свой код go из одного пустого в другой в моем коде меню и получить его для случайного генерирования входных данных? - PullRequest
0 голосов
/ 01 мая 2020

Мой код меню (основной) и код testMatrix не работают должным образом, код меню только неправильно переходит к методу GetMatrix (в нем пользователь вводит матрицу 4x4 вместо желаемого 3X4, а код testMatrix даже не работать, поскольку он просто использует вместо этого метод пользовательского ввода. Программа попросила меня изменить многие заголовки программы, чтобы код работал даже без сбоев.

package sumelementsbycolumn;

import java.util.Random;
import java.util.Scanner;

public class SumElementsByColumn 
{
        private final static Scanner myScan = new Scanner(System.in);

    //========================= void main() ==============================
    public static void main(String[] args) 
    {
        char choice;
        do
        {
            final int ROWS = 3;
            final int COLUMNS = 4;
            double[][] matrix = new double[ROWS][COLUMNS];
            choice = getMenu();
            switch (choice) 
            {
                case '1': 
                {
                    matrix = GetMatrix(matrix);
                    sumColumn(matrix);
                    sumPrint(matrix);
                    break;
                }
                case '2': 
                {
                    matrix = testMatrix(matrix);
                    sumColumn(matrix);
                    sumPrint(matrix);
                    break;
                }
                case '0':
                    System.out.println("\n==================================");
                    System.out.println("\n=    Thank You for Using The     ="
                                     + "\nSum Elements By Column Determiner");
                    System.out.println("\n=            Goodbye!            =");
                    System.out.println("\n==================================");
            }
        }while(choice != '0');

    }

    //========================= char GetMenu() ===========================
    private static char getMenu() 
    {
        System.out.print("===================================\n"
                + "=Sum Elements By Column Determiner=\n"
                + "===================================\n\n"
                + "\t(1) Input 3 rows of integers\n"
                + "\t(2) Test system using random numbers\n"
                + "\t(0) Exit the program\n"
                + "Choose: ");
        char choice = myScan.next().toUpperCase().charAt(0);

        return choice;

    }
    //========================= void sumPrint() ==============================
    private static void sumPrint(double[][] theMatrix)
        {

        // Read a 3-by-4 matrix
        final int ROWS = 3;
                final int COLUMNS = 4;
                double[][] matrix = new double[ROWS][COLUMNS];
                GetMatrix(matrix);

        // Display the sum of each column
        for (int col = 0; col < matrix[0].length; col++) 
                {   
            System.out.println(
                "Sum of the elements at column " + col + 
                " is " + sumColumn(matrix));
        }
    }
    //========================= double getMatrix() ===========================
    private static double[][] GetMatrix(double[][] matrix)
        {
            final int ROWS = 3;
            final int COLUMNS = 4;
            double[][] m = new double[ROWS][COLUMNS];

        // Prompt the user to enter a 3-by-4 matrix
            System.out.println("Enter a " + ROWS + "-by-" + 
            COLUMNS + " matrix row by row:");
            for (int row = 0; row < m.length; row++)
                for (int col = 0; col < m[row].length; col++) 
                    m[row][col] = myScan.nextDouble();
                    while(!myScan.hasNextDouble())  
                    {
                        System.out.println("That is not a valid number!");
                        System.out.println("Re-Enter the Matrix Values: ");
                        myScan.next();
                    }
            return m;
    }

    //========================= double sumColumn() ===========================
    public static double sumColumn(double[][] m)
        {
        double sum = 0;
                int columnIndex = 0;
                for (double[] m1 : m) 
                {
                sum += m1[columnIndex];
                }
        return sum;
    }
    //========================= double testMatrix() ===========================
    private static double[][] testMatrix(double[][] blankMatrix)
    {
        Random rnd = new Random();


        int count = 0;

            for (double[] blankMatrix1 : blankMatrix) 
            {
                for (int col = 0; col < blankMatrix.length; col++) 
                {
                    {
                        blankMatrix1[col] = rnd.nextInt(100);
                    }
                }
            }
        return blankMatrix;
    }

}

1 Ответ

0 голосов
/ 01 мая 2020

Я немного подправил код. Это должно работать. Проблема заключается в методе sumColumn, для которого индекс столбца всегда устанавливается равным 0.

import java.util.Random;
import java.util.Scanner;
import java.util.Arrays;

public class SumElementsByColumn
{
    private final static Scanner myScan = new Scanner(System.in);

    //========================= void main() ==============================
    public static void main(String[] args)
    {
        char choice;
        do
        {
            final int ROWS = 3;
            final int COLUMNS = 4;
            double[][] matrix = new double[ROWS][COLUMNS];
            choice = getMenu();
            switch (choice)
            {
                case '1':
                {
                    matrix = GetMatrix(matrix);
                   // sumColumn(matrix);
                    sumPrint(matrix);
                    break;
                }
                case '2':
                {
                    matrix = testMatrix(matrix);
                   // sumColumn(matrix);
                    sumPrint(matrix);
                    break;
                }
                case '0':
                    System.out.println("\n==================================");
                    System.out.println("\n=    Thank You for Using The     ="
                            + "\nSum Elements By Column Determiner");
                    System.out.println("\n=            Goodbye!            =");
                    System.out.println("\n==================================");
            }
        }while(choice != '0');

    }

    //========================= char GetMenu() ===========================
    private static char getMenu()
    {
        System.out.print("===================================\n"
                + "=Sum Elements By Column Determiner=\n"
                + "===================================\n\n"
                + "\t(1) Input 3 rows of integers\n"
                + "\t(2) Test system using random numbers\n"
                + "\t(0) Exit the program\n"
                + "Choose: ");
        char choice = myScan.next().toUpperCase().charAt(0);

        return choice;

    }
    //========================= void sumPrint() ==============================
    private static void sumPrint(double[][] theMatrix)
    {

        // Read a 3-by-4 matrix
        final int ROWS = 3;
        final int COLUMNS = 4;
       // double[][] matrix = new double[ROWS][COLUMNS];
        //GetMatrix(matrix);

        // Display the sum of each column
        for (int col = 0; col < theMatrix[0].length; col++)
        {
            System.out.println(
                    "Sum of the elements at column " + col +
                            " is " + sumColumn(theMatrix,col));
        }
    }
    //========================= double getMatrix() ===========================
    private static double[][] GetMatrix(double[][] matrix)
    {
        final int ROWS = 3;
        final int COLUMNS = 4;
        double[][] m = new double[ROWS][COLUMNS];

        // Prompt the user to enter a 3-by-4 matrix
        System.out.println("Enter a " + ROWS + "-by-" +
                COLUMNS + " matrix row by row:");
        for (int row = 0; row < m.length; row++) {
            for (int col = 0; col < m[row].length; col++) {
                m[row][col] = myScan.nextDouble();
            }
        }
        while(!myScan.hasNextDouble())
        {
            System.out.println("That is not a valid number!");
            System.out.println("Re-Enter the Matrix Values: ");
            myScan.next();
        }
        return m;
    }

    //========================= double sumColumn() ===========================
    public static double sumColumn(double[][] m,Integer col)
    {
        double sum = 0;
        int columnIndex = 0;

       // System.out.println(Arrays.deepToString(m));
        for (double[] m1 : m)
        {
           // System.out.println(" sumcolumn "+m1[col]);
            sum += m1[col];
        }
        return sum;
    }
    //========================= double testMatrix() ===========================
    private static double[][] testMatrix(double[][] blankMatrix)
    {
        Random rnd = new Random();


        int count = 0;

        for (double[] blankMatrix1 : blankMatrix)
        {
            for (int col = 0; col < blankMatrix.length; col++)
            {
                {
                    blankMatrix1[col] = rnd.nextInt(100);
                }
            }
        }
        return blankMatrix;
    }

}

Входной массив для теста:

===================================
=Sum Elements By Column Determiner=
===================================

    (1) Input 3 rows of integers
    (2) Test system using random numbers
    (0) Exit the program
Choose: 1
Enter a 3-by-4 matrix row by row:
1 2 3 4
5 6 7 8
9 10 11 12

Выходные данные:

Sum of the elements at column 0 is 15.0
Sum of the elements at column 1 is 18.0
Sum of the elements at column 2 is 21.0
Sum of the elements at column 3 is 24.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...