在过去的一个半小时里,我一直在为我的课程编写一些代码,我无法弄清楚为什么它的一部分不起作用。我每次运行时都会显示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;
}
答案 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();