使用数组加载文件

时间:2017-11-08 01:07:12

标签: java arrays file loops

我正在尝试使用文件结束循环从文件中加载一系列字符串和双精度数(在数组中)。输出显示文件中的前两行并发出错误。任何帮助/输入都会很棒。感谢。

package lab08;

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

 public class array {


public static void main(String[] args)throws IOException {

String mealName[];
double mealPrice[];
mealName = new String [3];
mealPrice = new double[3];


LoadArraysFromFile(mealName, mealPrice);

}

//Load Arrays From File
public static void LoadArraysFromFile(String mealName[], double mealPrice[]
)throws IOException{

    File mealInfoFile;
    Scanner mealFileSC; 

    mealInfoFile = new File("mealInfoFile.txt");
    mealFileSC = new Scanner(mealInfoFile);

    while (mealFileSC.hasNext()){
        int i = 0;

        mealName[i] = mealFileSC.nextLine();
        System.out.println(mealName[i]);
        mealPrice[i]= mealFileSC.nextDouble();
        System.out.println(mealPrice[i]);

    i++;
    }



     mealFileSC.close();

}

文件。

#1 T-shirt
4.99
#2 Pants
5.99
#3 Jacket
6.99

2 个答案:

答案 0 :(得分:0)

您没有正确转换while循环中的值。

我改变了这个:

while (mealFileSC.hasNext()){
    int i = 0;

    mealName[i] = mealFileSC.nextLine();
    System.out.println(mealName[i]);
    mealPrice[i]= mealFileSC.nextDouble();
    System.out.println(mealPrice[i]);

i++;

对此:

while (mealFileSC.hasNext()) {

       int i = 0;

       mealName[i] = mealFileSC.nextLine().toString();
       System.out.println(mealName[i]);
       mealPrice[i] = Double.valueOf(mealFileSC.nextLine());
       System.out.println(mealPrice[i]);

       i++;
   }

它应该以这种方式工作。

答案 1 :(得分:0)

你必须跳过带有double值的行,因为你已经用mealFileSC.nextDouble();读取了double值,只需将它添加到while循环的末尾:

        if(mealFileSC.hasNext())
            mealFileSC.nextLine();

输出:

#1 T-shirt
4.99
#2 Pants
5.99
#3 Jacket
6.99