時,這是我的代碼InputMismatchException時使用Sacnner nextLine絃樂
import java.io.*;
import java.util.*;
class student
{
String name;
int age;
float cgpa;
}
public class getdata
{
public static void main(String args[]) throws IOException
{
Scanner in=new Scanner(System.in);
int n;
n=in.nextInt();
student[] s=new student[n];
for(int i=0;i<n;i++)
{
try
{
s[i]=new student();
s[i].name=in.nextLine();
in.nextLine();
s[i].age=in.nextInt();
s[i].cgpa=in.nextFloat();
}
catch(InputMismatchException e)
{
System.out.println(e.getMessage());
}
}
System.out.println();
System.out.println("Name\tAge\tCGPA\n");
for(int i=0;i<n;i++)
{
System.out.println(s[i].name+"\t"+s[i].age+"\t"+s[i].cgpa+"\n");
}
}
}
編譯程序沒有給出問題。但是當執行時,我嘗試輸入一個字符串空間,它將字符串作爲兩個單獨的字符串,並將其中一個的所有其他值指定爲null。爲例如,如果我輸入
mike hannigan
5
6.5
輸出是
mike 0 0.0
hannigan 5 6.5
我試圖獲得僅具有單個in.nextLine();
的字符串,但導致要採取的字符串作爲空(拋出InputMismatchException時)。用try和catch塊
並沒有try塊,這是輸出我得到
這是因爲'nextInt'和'nextFloat'不會消耗換行符,所以後續的'nextLine'不會捕獲您期望的結果。我確定有一個重複的地方解釋了這個... – 4castle