0

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

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

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

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();
    }
}
4

3 回答 3

1

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

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

    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();

于 2015-03-14T21:24:19.047 回答
0

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

于 2013-04-16T06:36:45.520 回答
0

我猜您的比较由于区分大小写而失败。

您的字符串比较不应该区分大小写吗?

于 2013-04-16T06:34:14.147 回答