无法弄清楚为什么数组写作不能正常工作

时间:2015-12-19 04:52:21

标签: java arrays

在过去的一个半小时里,我一直在为我的课程编写一些代码,我无法弄清楚为什么它的一部分不起作用。我每次运行时都会显示java.util.InputMismatchException

double array[][] = createArray(inputFileName);是对我遇到问题的createArray()方法的调用。

数组使用的信息位于.txt文件中。前两个数字都是int,它们决定了我的数组中的行和列。之后的所有数字都是进入阵列的双打。我设法让它读取整数(不是它是一个挑战),但由于某种原因,我无法弄清楚它是如何或为什么不想与其余的一起工作。

在这一点上,由于我的沮丧,我看起来很可能是一些小事,但如果有人可以解释问题是什么,我不太理解我不必处理我每次都需要创建一个数组。

如果需要更多信息,请告知我们。谢谢。

public static void main(String[] args) throws FileNotFoundException {
        String chooseMessage = "welcome";
        String userName = "";
        String inputFileName = "";
        String outputFileName = "";
        double arrayAverage;
        double arrayMin;
        double arrayMax;



        chooseMessage = displayMessage(chooseMessage, inputFileName, outputFileName);
        chooseMessage = displayMessage(chooseMessage, inputFileName, outputFileName);
        userName = getName();
        inputFileName = getInputFileName();
        outputFileName = getOutputFileName();
        double array[][] = createArray(inputFileName);
        arrayAverage = computeAverage(array);
        arrayMin = findMin(array);
        arrayMax = findMax(array);
        printOut(inputFileName, outputFileName, arrayAverage, arrayMin, arrayMax);
        chooseMessage = displayMessage(chooseMessage, inputFileName, outputFileName);
        chooseMessage = displayMessage(chooseMessage, inputFileName, outputFileName);


    }


    public static double[][] createArray(String inputFileName) throws FileNotFoundException { //reads the input file and creates an array

        File inputFile = new File(inputFileName);
        Scanner FileReader = new Scanner(inputFile);

        int rows = FileReader.nextInt();
        int columns = FileReader.nextInt();

        System.out.println("rows: " + rows);
        double[][] newArray = new double[rows][columns];

        for (int i=0; i<(newArray.length); i++) {
            for (int j=0; j<newArray[i].length; j++)
                newArray[i][j] = FileReader.nextInt();
        }

        FileReader.close();
        //System.out.println(java.util.Arrays.deepToString(newArray));
        return newArray;
    }

3 个答案:

答案 0 :(得分:1)

我认为这是问题..

for (int i=0; i<(newArray.length); i++) {
            for (int j=0; j<newArray[i].length; j++)
                newArray[i][j] = FileReader.nextInt();  // This might be the problem... 
        }

您应该使用

FilReader.nextDouble()

答案 1 :(得分:0)

尝试这可能是。

double[][] array  = createArray(inputFileName);

答案 2 :(得分:0)

java.util.InputMismatchException

  

由扫描程序抛出,表示检索到的令牌没有   匹配预期类型的​​模式,或者令牌不在   预期类型的​​范围。

在前两个输入的情况下,它工作正常。但之后,您的文件包含双值,并且您尝试使用nextInt读取它,因此抛出此InputMismatchException

<强>解决方案

而不是这个

 newArray[i][j] = FileReader.nextInt();

使用

newArray[i][j] = FileReader.nextDouble();