Vergleich der Benutzer-Eingabe-string zu string Lesen aus Textdatei
Schreibe ich momentan das Programm, dass ich benötigt, um Lesen Informationen aus text-Datei, und vergleichen Sie dann die info Lesen, um eine Benutzer-Eingabe und-Ausgabe eine Meldung, wenn es ein Spiel ist oder nicht.
Derzeit haben diese. Das Programm ist erfolgreich Lesen der Daten angegeben, aber ich kann nicht scheinen, um zu vergleichen, die Saiten richtig am Ende, und drucken Sie ein Ergebnis.
Code unten jede mögliche Hilfe würde sehr geschätzt werden.
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();
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie versuchen, das Lesen der Eingabe aus einem textField in eine Benutzeroberfläche(sichtbar), wo der Benutzer legt das Land und die erste, die als raw-Eingabe verkürzt den code.(Nur, wenn Sie ein sichtbares Fenster auf dem Bildschirm)
Ich habe nicht so gute Erfahrung mit Scannern, da Sie dazu neigen zu Abstürzen meine Anwendungen wenn ich Sie verwende. Aber mein code für die gleiche test-nur gehören ein scanner für die Datei, die nicht Abstürzen, meine Anwendung und sieht wie folgt aus:
Ich denke, die einfachste Methode zum vergleichen von string für eine Datei ist, um eine sichtbare Fenster, wo der Benutzer gibt das Land, und das Lesen der Eingabe einen string mit
String str = textField.getText();
Ich vermute, dass dein Vergleich ist nicht wegen der groß-und Kleinschreibung.
Sollten Ihre string-Vergleich nicht CASE-INSENSITIVE sein?
Gibt es ein paar mögliche Probleme hier. Erste, Sie konvertieren die
searchString
Kleinbuchstaben um. Sind die Daten in der CSV auch Kleinbuchstaben? Wenn nicht, versuchen Sie es mitequalsIgnoreCase
statt. Auch, es scheint mir, wie Sie sollten in der Lage sein match teilen des Landes Namen. In diesem Fallequals
(oderequalsIgnoreCase
) würde nur funktionieren, wenn die Eingaben des Benutzers die vollständigen Ländernamen. Wenn Sie wollen, um in der Lage, mit nur ein Teil, verwendencontains
statt.