gpt4 book ai didi

java - 如何修复 Java 中的不匹配异常?

转载 作者:行者123 更新时间:2023-12-02 13:13:11 25 4
gpt4 key购买 nike

我不断收到名为“java.util.Mismatchexpection: null”的错误。我不知道如何解决这个问题。它指向 grade = fileInput.nextInt(); 行。

这是我正在使用的类:

import java.util.Scanner;

import java.io.*;

public class Students
{
public static void printAllStudents(Student[] students){
for(int i=0;i<students.length;i++)
{
System.out.println(students[i]);
}
}

public static void printAllStudentsByFirstName(Student[] students,String firstName){
String name=firstName.split(" ")[1];
int len=name.length();
for (int i=0;i<students.length;i++){
try{
if(students[i].getFname().substring(0, len).equalsIgnoreCase(name)){
System.out.println(students[i]);
}
}
catch (Exception e) {
// TODO: handle exception
}
}
}

public static void printAllStudentsByLastName(Student[] students,String lastName){
String name=lastName.split(" ")[1];

int len = name.length();

for(int i=0;i<students.length;i++){
try{
if(students[i].getLname().substring(0, len).equalsIgnoreCase(name)){
System.out.println(students[i]);
}
}
catch (Exception e) {
// TODO: handle exception
}
}
}

public static void printAllStudentsByGrades(Student[] students,String interval){
int start=Integer.parseInt(interval.split(" ")[1]);
int end=Integer.parseInt(interval.split(" ")[2]);
for(int i=0;i<students.length;i++){
if(students[i].getGrade()>=start && students[i].getGrade()<=end){
System.out.println(students[i]);
}
}
}

public static void sort(Student[] students)
{
int n = students.length;
int k;
for (int m = n; m >= 0; m--) {
for (int i = 0; i < n - 1; i++) {
k = i + 1;
if (students[i].getGrade() > students[k].getGrade())
{
Student temp=new Student();
temp = students[k];
students[k]=students[i];
students[i]=temp;
}
}
}
printAllStudents(students);
}

public static void main (String[] args) throws IOException
{
String first_name, last_name, line = "";
int grade, lines = 0, i;
char ch;
Scanner sc = new Scanner(System.in);
Scanner fileInput = new Scanner(new File("students.txt"));
//Counting the number of lines in the file.
while (fileInput.hasNext())
{
line = fileInput.next();
lines++;}

fileInput = new Scanner(new File("students.txt"));
//Declaring Student array of size lines.
Student[] students=new Student[lines];
i = 0;

while (fileInput.hasNext())
{
first_name = fileInput.nextLine();
last_name = fileInput.nextLine();
grade = fileInput.nextInt();

Student st = new Student(first_name, last_name, grade);
students[i++] = st;
}

System.out.println("Please choose from below operations: ");
System.out.println("1. printall");
System.out.println("2. firstname <name>");
System.out.println("3. lastname <name>");
System.out.println("4. interval m n");
System.out.println("5. sort");
System.out.println("6. end");

while (true)
{
System.out.println("Enter choice:");
String choice = sc.nextLine();
if(choice.equals("printall"))
printAllStudents(students);
else if(choice.indexOf("firstname")==0)
printAllStudentsByFirstName(students, choice);
else if(choice.indexOf("lastname") == 0)
printAllStudentsByLastName(students, choice);
else if(choice.indexOf("interval") == 0)
printAllStudentsByGrades(students, choice);
else if(choice.equals("sort"))
sort(students);
else if(choice.equals("end"))
break;
}
}

}

public class Student
{
private String fname, lname;
private int grade;

public Student()
{
super(); //gives us the ability to override


}

public Student (String fname, String lname, int grade)
{
this.fname = fname;
this.lname = lname;
this.grade = grade;
}

public String getFname() {
return fname;
}

public void setFname (String fname) {
this.fname = fname;
}

public String getLname() {
return lname;
}

public void setLname(String lname) {
this.lname = lname;
}

public int getGrade() {
return grade;
}

public void setGrade(int grade) {
this.grade = grade;
}

public String toString()
{
return fname + " " + lname + "\t" + grade;
}
}

任何帮助将不胜感激。

最佳答案

扫描器遇到意外输入时,会触发MismatchException。在您的情况下,扫描程序在期望 fileInput.nextInt() 输入 int 时拾取 null

这与 student.txt 的格式以及解析它的方式有关;尝试在 IDE(如果您使用的是 IDE)中逐步调试运行代码,以查明如何修复文本文件解析。

关于java - 如何修复 Java 中的不匹配异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43860309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com