Чтение содержимого файла в 2D массив - PullRequest
0 голосов
/ 08 ноября 2011

Я довольно новичок в программировании, поэтому разговоры неспециалистов приветствуются.

Мне было поручено прочитать содержимое файла, который будет содержать 9 значений (массив 3х3), а затем поместить содержимое в соответствующий индекс.

Например,

Содержимое двумерного массива ...

1.00   -2.00   3.00   
4.00    1.00  -1.00   
1.00    2.00   1.00  

После прочтения содержимого его необходимо распечатать. Затем программа запросит у пользователя скалярный множитель, например «4». Затем программа должна распечатать новый массив с новым выводом.

У меня сейчас есть это,

import java.io.*;
import java.util.*;


public class CS240Lab8a {

/**
 * @param args the command line arguments
 */
static double [][] matrix = new double[3][3];
static Scanner input = new Scanner(System.in);


public static void main(String[] args) throws IOException 
{
   // Variables
   String fileName = "ArrayValues.txt";




    // print description
   printDescription();

   // read the file
   readFile(fileName);

   // print the matrix
   printArray(fileName, matrix);

   // multiply the matrix
   multiplyArray(fileName, matrix);


}


// Program Description
        public static void printDescription()
        {
            System.out.println("Your program is to read data from a file named ArrayValues.txt and store the values in a 2D 3 X 3 array.  "
                    + "\nNext your program is to ask the user for a scalar multiplier \n"
                    + "which is then used to multiply each element of the 2D 3 X 3 array.\n\n"); 
        }



// Read File
        public static void readFile(String fileName) throws IOException
        {
            String line = "";

            FileInputStream inputStream = new FileInputStream(fileName);
            Scanner scanner = new Scanner(inputStream);
            DataInputStream in = new DataInputStream(inputStream);
            BufferedReader bf = new BufferedReader(new InputStreamReader(in));

            int lineCount = 0;
            String[] numbers;
            while ((line = bf.readLine()) != null)
            {
                numbers = line.split(" ");
                for (int i = 0; i < 3; i++)
                {
                matrix[lineCount][i] = Double.parseDouble(numbers[i]);
                }

                lineCount++;
            }
            bf.close();

        }


 // Print Array      
        public static void printArray(String fileName, double [][] array)
        {
            System.out.println("The matrix is:");

             for (int i = 0; i < 3; i++)
                {
                    for(int j = 0; j < 3; j++) 
                    {
                        System.out.print(matrix[i][j] + " ");
                     }
                    System.out.println();
                }
             System.out.println();
         }

        public static double multiplyArray(String fileName, double[][] matrix)
         {
                double multiply = 0;

                System.out.println("Please enter the scalar multiplier to be used.");
                multiply = input.nextDouble();

                for(int i = 0; i < 3; i++)
                {
                    for(int j = 0; j < 3; j++)
                    {
                        matrix[i][j] 

                return multiply;
          }



} // end of class

В настоящее время он правильно печатает массив.

Каков наилучший способ умножить каждое значение индекса на константу (пользовательский ввод)?

Ответы [ 2 ]

2 голосов
/ 08 ноября 2011

Здесь вам не хватает дополнительного шага.

После того, как вы прочитали строку, вам нужно разделить строку и разобрать дважды по отдельным номерам.не нужно ничего возвращать.Просто сделайте вашу матричную переменную глобальной.

0 голосов
/ 08 ноября 2011

хорошо, как я к этому отношусь: Вы читаете содержимое входного файла в строку. У вас уже есть метод для чтения построчно, просто поместите все в строку.

String content = readFile(input.txt);

// Parse lines

String[] lines = content.split("\n");

// Parses values

for(int i = 0; i < lines.length; i++)  {
    // Get line values
    String[] values = lines[i].split(" ");
    for(int j = 0; j < values.length; j++) {
        // Punt in Matrix
        matrix[i][j] = Double.parseDouble(values[j]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...