如何使NoSuchElementException不显示并用我自己的错误消息替换它



所以我应该做的是让这个代码搜索文件名.txt(包含大约一千个婴儿名字和他们从1900年到现在的排名)来寻找我输入的名字,并让程序打印出名称和排名。 如果文件中不存在该名称,则应该打印出诸如"找不到名称"之类的内容。 我的问题是,它要么在找到名字之前打印出大约 2k 次"未找到姓名",要么每年打印出"未找到姓名",直到我到达姓氏并意识到它不存在。然后,它会打印出 CPU 生成的错误。 我也不应该让错误只是计算机生成的错误。请帮忙。

import java.util.Scanner;
import java.io.*;
public class BabyNames {
    public static void main(String[] args)
            throws FileNotFoundException {
        Scanner input = new Scanner(System.in);
        Scanner reader = new Scanner(new File("names.txt"));
        String findNameOriginal = " ";
        String findName = " ";
        int space = 0;
        int rank = 0;
        int year = 1900;
        System.out.println("This program graphs the popularity of a name in 11 decades' worth of statistics recorded since the year 1900.");
        System.out.print("Type a name: ");
        String name = input.next();
        System.out.println("nPopularity ranking of name "" + name + """);
        while (!findName.equalsIgnoreCase(name)) {
            findNameOriginal = reader.nextLine();
            Scanner nameLine = new Scanner(findNameOriginal);
            space = findNameOriginal.indexOf(" ");
            findName = nameLine.next();
            for (year = 1900; year <= 2000; year += 10) {
                rank = nameLine.nextInt();
                if (findName.equalsIgnoreCase(name)) {
                    System.out.println(year + ": " + rank);
                } else {
                    System.out.println("Name not found");
                }
            }
        }
    }
}

(不确定此名称和数据链接是否有效)http://fcps.blackboard.com/@@/3773575E3802F997E96CECF10E46CA25/courses/1/030-1-348-31840002-1314-YR/content/_27024448_1/names.txt

您可以添加一个布尔值来跟踪是否找到该名称:

 boolean found=false;
    while ((findNameOriginal = reader.nextLine()) != null)
      {
         Scanner nameLine = new Scanner(findNameOriginal);
         space = findNameOriginal.indexOf(" ");
         findName = nameLine.next();            
         for (year = 1900; year <= 2000; year += 10)
         {
            rank = nameLine.nextInt();        
            if (findName.equalsIgnoreCase(name))
            {
               System.out.println(year + ": " + rank);
               found=true;
            }

         }
      }  
if(!found) System.out.println("Name not found");

检查您的while状况会是什么...

while (!name.trim().equals(null)) {
    try{
    //your code
    }catch (Exception e){
    }
  }

相关内容

最新更新