繁体   English   中英

打印出从文件读取存储的数组数据

[英]Printing out array data stored from File read

我正在尝试创建一个 class,它使用单独的方法从文件中读取两组数据并将其存储到 2 个不同的 arrays 中。 我不知道是读取方法还是我的 output 不正确,但我似乎无法弄清楚如何让它打印出所有数据集。 我得到文件的最后一行而不是所有内容。

products.txt 中的示例是

产品1,1100

产品2,1205

产品3,1000

主要方法

    String[] pName;
    double[] pPrice;
    String outputStr = null;
    int i = 0;
    //String name = null; 
    
    // Input number of customers
            
    //initialize arrays with size
    pPrice=new double[50];
    pName=new String[50];
            
    // read from file, the method is incomplete
    try {
        readFromFile(pName, pPrice, "products.txt");
    } catch (FileNotFoundException e) {
        JOptionPane.showMessageDialog(null, "File cannot be read");
        e.printStackTrace();
    }
    for (i = 0; i < pName.length; i++) {  
    outputStr = pName[i] + "," + pPrice[i] + "\n";
    }
    // Call method before sorting both arrays
    display(outputStr); 

阅读方法

    public static void readFromFile(String[] pName, double[] pPrice, String fileName) throws FileNotFoundException {

     // read data from products
    // Create a File instance
    File file = new File(fileName);
                        
    // Create a Scanner for the file
    Scanner sc = new Scanner(file);

     // Read data from a file, the data fields are separated by ',' 
    // Change the Scanner default delimiter to ','
    sc.useDelimiter(",|\r\n");
                        
      // Start reading data from file using while loop
    int i = 0;
     while (sc.hasNext()) {
                        
     String name = sc.next();
                           
     String cost = sc.next();
                                           
    //add the customer data through arrays
                                       
        pName[i] = name;
                               
        pPrice[i] = Double.parseDouble(cost);
                   
       i++;
         }//end while
      
    // Close the file

问题是您的 for 循环将每一行分配给 outputStr 变量:

for (i = 0; i < pName.length; i++) {  
    outputStr = pName[i] + "," + pPrice[i] + "\n";
}

最后看到换行符,我假设您想将所有行连接到该字符串变量中。 所以将该代码更改为

for (i = 0; i < pName.length; i++) {  
    outputStr += pName[i] + "," + pPrice[i] + "\n";
}

当您将变量初始化为 null 时,这可能会引发 NullPointerException。 如果是这种情况,只需使用“”进行初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM