Java 将文件内容读入二维数组

Java 将文件内容读入二维数组,java,arrays,io,Java,Arrays,Io,我对编程相当陌生,所以外行的演讲很受欢迎 我的任务是读取一个文件的内容,该文件将包含9个值(3x3数组),然后将内容放入相应的索引中 比如说, 二维数组的内容是 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.*;

我对编程相当陌生,所以外行的演讲很受欢迎

我的任务是读取一个文件的内容,该文件将包含9个值(3x3数组),然后将内容放入相应的索引中

比如说,

二维数组的内容是

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
import java.io.*;
导入java.util.*;
公共类CS240Lab8a{
/**
*@param指定命令行参数
*/
静态双精度[]矩阵=新双精度[3][3];
静态扫描仪输入=新扫描仪(System.in);
公共静态void main(字符串[]args)引发IOException
{
//变数
String fileName=“ArrayValues.txt”;
//打印说明
printDescription();
//读文件
读取文件(文件名);
//打印矩阵
printArray(文件名、矩阵);
//将矩阵相乘
多重数组(文件名、矩阵);
}
//程序描述
公共静态void printDescription()
{
System.out.println(“您的程序将从名为ArrayValues.txt的文件中读取数据,并将值存储在2D 3 X 3数组中。”
+“\n下一步,您的程序将要求用户提供标量乘数\n”
+“然后用于将2D 3 X 3数组的每个元素相乘。\n\n”);
}
//读取文件
公共静态void readFile(字符串文件名)引发IOException
{
字符串行=”;
FileInputStream inputStream=新的FileInputStream(文件名);
扫描仪=新扫描仪(inputStream);
DataInputStream in=新的DataInputStream(inputStream);
BufferedReader bf=新的BufferedReader(新的InputStreamReader(in));
int lineCount=0;
字符串[]数字;
而((line=bf.readLine())!=null)
{
数字=行。拆分(“”);
对于(int i=0;i<3;i++)
{
矩阵[lineCount][i]=Double.parseDouble(数字[i]);
}
lineCount++;
}
bf.close();
}
//打印阵列
公共静态void printary(字符串文件名,双[]数组)
{
System.out.println(“矩阵为:”);
对于(int i=0;i<3;i++)
{
对于(int j=0;j<3;j++)
{
系统输出打印(矩阵[i][j]+“”);
}
System.out.println();
}
System.out.println();
}
公共静态双多重数组(字符串文件名,双[]矩阵)
{
双倍乘=0;
System.out.println(“请输入要使用的标量乘数”);
multiply=input.nextDouble();
对于(int i=0;i<3;i++)
{
对于(int j=0;j<3;j++)
{
矩阵[i][j]
返回乘法;
}
}//下课
我目前已经让它正确打印阵列了


将每个索引值乘以常数(用户输入)的最佳方法是什么?

这里缺少一个额外的步骤

一旦你读到这一行,你就必须拆分这一行,并对单个数字进行双精度分析

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

    lineCount++;
}
int lineCount=0;
而((line=bf.readLine())!=null)
{
字符串[]数字=行。拆分(“”);
对于(int i=0;i<3;i++)
矩阵[lineCount][i]=Double.parseDouble(数字[i]);
lineCount++;
}
另外,您的readFile不需要返回任何内容。只需将矩阵变量设置为全局变量。

好的,按照我的看法: 您将输入文件的内容读取为字符串。您已经拥有逐行读取的方法,只需将所有内容放入字符串中即可

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]);
    }
}
String content=readFile(input.txt);
//解析行
字符串[]行=content.split(“\n”);
//解析值
对于(int i=0;i
我看到的第一个问题是,你没有给矩阵赋值。你实际上是在readFile方法中创建了一个名为matrix的新2d数组。第二个问题是,在readFile方法中,你有矩阵[0][0]=数字;在循环中……所以你只给矩阵的第一个位置赋值。“它接受第一行,但在之后失败。”失败方式?具体点。顺便说一句-你有问题吗?aleph_null-你有没有建议如何将每个“double”存储到索引中,以便“double”=(x,y)索引?还有,如何在提交前一个索引后转到下一个索引?Andrew Thompson-我收到的错误如下——”线程“main”java.lang.NumberFormatException中的异常:输入字符串在sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241)在java.lang.Double.parseDouble(Double.java:540)在CS240Lab8a.readFile(CS240Lab8a.java:63)在CS240Lab8a.main(CS240Lab8a.java:32)中的异常:1“-我的问题在底部(1,2,3)-如何完成这些任务卡尔,这有所帮助,但现在的输出是,“矩阵是:0.00.00.00.00.00.00.00.0”您正在printArray方法中声明一个新变量
matrix
。请摆脱该声明,并将
matrix
变量设置为全局变量。在类定义的顶部声明它。我现在可以很好地完成这项工作,我正在着手数组的乘法运算。很高兴您这么做。如果任何答案都有帮助,请记住把它标记为正确答案。海因