我正在为我的java课做我的实验室而且我做了这个,但无论我如何尝试修复它,我都会收到错误。我知道问题出在case 1
声明的switch
下。我已经尝试重新排序infiles并将inFile.nextLine();
添加到列表的开头,结尾和中间,并且无法正常工作
这是错误:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at Lab6.main(Lab6.java:73)
这是我的代码:
import java.util.Scanner;
import java.io.*;
public class Lab6
{
public static int menu()
{
int ans;
System.out.println("Please chose an option");
System.out.println("1.Class Average");
System.out.println("2.Student Average");
System.out.println("3.Standard Deviation");
System.out.println("4.Letter grades");
System.out.println("5.Minimum/Maximum");
System.out.println("6.Locate : ");
System.out.println("7.Locate All students where the difference between exam1 and exam2>15%");
System.out.println("8.Histogram");
System.out.println("9.Update data");
System.out.println("10.Quit");
Scanner keyboard = new Scanner (System.in);
ans=keyboard.nextInt();
return ans;
}
public static void main (String[] args)throws IOException
{
//variables
int choice;
int testno;
int test1,
test2;
int NewScore;
int count;
int sum1,
sum2;
int avg1,
avg2;
String name;
//get choice
Scanner keyboard = new Scanner (System.in);
choice=menu();
File myFile = new File("lab6_indata.txt");
Scanner inFile = new Scanner(myFile);
switch(choice)
{
case 1:
System.out.println("You Chose Class Average\n");
count=1;
sum1=0;
sum2=0;
avg1=0;
avg2=0;
while(count<=25)
{
test1=inFile.nextInt();
test2=inFile.nextInt();
sum1=sum1 + test1;
sum2=sum2 + test2;
count ++;
}
avg1 = sum1 / count;
avg2 = sum2 / count;
System.out.println("Class Average Test 1:"+ avg1);
System.out.println("Class Average Test 2:"+ avg2);
break;
case 2:
System.out.println("You Chose Student Average");
break;
case 3:
System.out.println("You Chose Standard Deviation");
break;
case 4:
System.out.println("You Chose Letter grades");
break;
case 5:
System.out.println("You Chose Minimum/Maximum");
break;
case 6:
System.out.println("You Chose Locate : ");
break;
case 7:
System.out.println("You Chose Locate All students where the difference between exam1 and exam2>15%");
break;
case 8:
System.out.println("You Chose Histogram");
break;
case 9:
System.out.println("You Chose Update data");
System.out.println("Please Enter Name");
name=keyboard.nextLine();
System.out.println("Are you updating test number 1 or 2?");
testno=keyboard.nextInt();
System.out.println("What is the new score?");
NewScore=keyboard.nextInt();
break;
case 10:
System.out.println("Program Ended");
break;
default:
System.out.println("Error: Invaild option");
break;
}
inFile.close();
}
}
这是我的inFile:
*Robert 70 82
*Joel 64 50
*Alice 98 95
*Jasmine 76 92
*Larry 42 69
*Elizabeth 79 85
*Frank 75 66
*Christine 20 36
*Alex 0 52
*Ariel 84 81
*Luis 65 77
*Nicole 40 89
*Mitch 90 94
*Randy 88 86
*Tammy 91 84
*Sarah 78 71
*Samuel 80 66
*Lauren 55 63
*Deanna 97 99
*Mathew 100 87
*Justin 68 76
*Beth 96 95
*Rebecca 85 83
*Paul 44 65
*Lucy 34 56
也许我的inFile需要采用不同的格式?
答案 0 :(得分:0)
每行中的第一个标记是String
,因此需要在读取任何整数之前使用
String studentName = inFile.next();
test1 = ...
答案 1 :(得分:0)
来自javadocs:
由扫描程序抛出,表示检索到的令牌没有 匹配预期类型的模式,或者令牌不在 预期类型的范围。
您的输入可能无法正确格式化,并且java无法比较具有不同格式的两种内容,例如int
和string
。