比较用户输入字符串与从文本文件读取的字符串

时间:2013-04-16 06:28:30

标签: java string input compare

我正在编写这个程序,我需要从文本文件中读取信息,然后将读取的信息与用户输入进行比较,并输出一条消息,说明它是否匹配。

目前有这个。该程序成功读取指定的数据,但我似乎无法在最后正确比较字符串并打印结果。

代码低于任何帮助将不胜感激。

import java.util.Scanner;      // Required for the scanner
import java.io.File;               // Needed for File and IOException 
import java.io.FileNotFoundException; //Required for exception throw

// add more imports as needed

/**
 * A starter to the country data problem.
 * 
 * @author phi 
 * @version starter
 */
public class Capitals
{
    public static void main(String[] args) throws FileNotFoundException // Throws Clause Added
    {
        // ask the user for the search string
        Scanner keyboard = new Scanner(System.in);
        System.out.print("Please enter part of the country name: ");
        String searchString = keyboard.next().toLowerCase();

        // open the data file
        File file = new File("CountryData.csv");

        // create a scanner from the file
        Scanner inputFile = new Scanner (file);

        // set up the scanner to use "," as the delimiter
        inputFile.useDelimiter("[\\r,]");

        // While there is another line to read.
        while(inputFile.hasNext())
        {
            // read the 3 parts of the line
            String country = inputFile.next(); //Read country
            String capital = inputFile.next(); //Read capital
            String population = inputFile.next(); //Read Population

            //Check if user input is a match and if true print out info.
            if(searchString.equals(country))
            {
                System.out.println("Yay!");
            }
            else
            {
                System.out.println("Fail!");
            }
        }

        // be polite and close the file
        inputFile.close();
    }
}

3 个答案:

答案 0 :(得分:1)

您应该尝试从用户界面(可见窗口)中的textField读取输入,用户放置该国家/地区并将其作为原始输入缩短代码。(仅当您在屏幕上有可见窗口时)

我对扫描仪没有那么好的经验,因为当我使用扫描仪时,它们会使我的应用程序崩溃。但我的相同测试代码只包含一个文件扫描程序,它不会使我的应用程序崩溃,如下所示:

    Scanner inputFile = new Scanner(new File(file));

    inputFile.useDelimiter("[\\r,]");
    while (inputFile.hasNext()) {
        String unknown = inputFile.next();
        if (search.equals(unknown)) {
            System.out.println("Yay!");
        }
    }

    inputFile.close();


我认为将字符串与文件进行比较的最简单方法是添加一个可见窗口,用户可以在其中键入国家/地区,并使用String str = textField.getText();

读取字符串的输入

答案 1 :(得分:0)

我猜你的比较因为区分大小写而失败。

你的字符串比较不应该是CASE-INSENSITIVE吗?

答案 2 :(得分:0)

这里有一些可能的问题。首先,您要将searchString转换为小写。 CSV中的数据是否也是小写的?如果没有,请尝试使用equalsIgnoreCase。此外,在我看来,你应该能够匹配国家名称的部分。在这种情况下,equals(或equalsIgnoreCase)仅在用户输入完整的国家/地区名称时才有效。如果您希望只能匹配某个部分,请改用contains