将输入与文本文件Java中保存的特定行进行比较



为了验证用户输入的国家/地区,我试图与存储在文本文件中存储的国家/地区相比,要获得该国家/地区的输入。如果输入与文本文件中存储的一个国家/地区匹配,则验证派将设置为" true",并且该程序将能够继续进行。这就是我到目前为止所拥有的:

    Scanner sc = new Scanner (System.in);
    String country = "";
    boolean validCountry = false;
    while (!validCountry)
    {
        System.out.print("Country: ");
        String countryIn = sc.next();
        try{
            Scanner scan = new Scanner(new File("countries.txt"));
            while (scan.hasNext()) {
                String line = scan.nextLine().toString();
                if(line.contains(countryIn))
                {
                    country = line; 
                    validCountry = true;
                }
            }
        }catch(Exception e)
        {
            System.out.print(e);
        }
    }      

上面的简单循环让我重新输入该国(这意味着它无效)。

这就是centry.txt文件的样子(显然包含世界上所有国家的所有国家,而不仅仅是以'a'的开始:

Afghanistan
Albania
Algeria
American Samoa  
Andorra 
Angola  
Anguilla
...

我敢肯定这是一个非常简单且微小的错误,我似乎找不到。但是我一直试图检测一段时间,但无济于事。我已经检查了其他多个Stackoverflow答案,但它们似乎也没有起作用。我非常感谢任何形式的帮助:)

请让我知道我的问题是否需要进一步澄清。

我测试了代码,对我有用。我像这样初始化了您的变量sc

Scanner sc = new Scanner(System.in);

请注意,最好在while循环外加载文件(以获得更好的性能)

假设在 string countryin = sc.next(); sc.next(); sc 是使用 system.in,将 .next()更改为 NextLine()

String countryIn = sc.nextLine();

那么,您也应该更改 if(line.contains(countryin)),因为即使给定的行是一个国家的子弦,它也会返回true( afg )即使 afg 不在国家列表中。

if (line.equalsIgnoreCase(countryIn)) {
...
}

如果此类有效,请尝试:

import java.util.Scanner;
import java.io.File;
public class Country {
    public static void main(String[] args) {
        Scanner sc = new Scanner (System.in);
        String country = "";
        boolean validCountry = false;
        while (!validCountry)
        {
            System.out.print("Country: ");
            String countryIn = sc.nextLine();
            try{
                Scanner scan = new Scanner(new File("countries.txt"));
                while (scan.hasNext()) {
                    String line = scan.nextLine();
                    if(line.equalsIgnoreCase(countryIn))
                    {
                        country = line; 
                        validCountry = true;
                        break;
                    }
                }
            }catch(Exception e)
            {
                e.printStackTrace();
            }
        }   
    }
}

解决的问题,我所遇到的contrent.txt文件是在Unicode中编码的。我要做的就是将其更改为ANSI。

相关内容

  • 没有找到相关文章

最新更新