Ich versuche, Eingaben vom Terminal zu lesen. Dafür benutze ich einen BufferedReader. Hier ist mein Code.Eingabe der Eingabefehler in Java
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] args;
do {
System.out.println(stateManager.currentState().toString());
System.out.print("> ");
args = reader.readLine().split(" ");
// user inputs "Hello World"
} while (args[0].equals(""));
Irgendwo anders in meinem Code habe ich eine HashTable
wo der Schlüssel und Werte sind beide Strings. Hier ist das Problem:
Wenn ich einen Wert von der HashTable
erhalten möchte, wo der Schlüssel, den ich verwende, um in der HashTable
nachschlagen ist eines der Argumente Elemente. Diese Argumente sind komisch. Wenn der Benutzer zwei Argumente eingibt (das erste ist ein Befehl, das zweite ist das, was der Benutzer nachschlagen möchte), kann ich keine Übereinstimmung finden.
Zum Beispiel, wenn der HashTable enthält die folgenden Werte:
[ {"Hello":"World"}, {"One":"1"}, {"Two":"2"} ]
und der Benutzer gibt:
get Hello
Mein Code nicht zurück "World"
.
Also habe ich den Debugger (mit Eclipse) verwendet, um zu sehen, was in args
ist. Ich fand, dass args[1]
enthält "Hello"
aber innerhalb args[1]
gibt es ein Feld mit dem Namen value
, die den Wert ['g','e','t',' ','H','e','l','l','o']
hat.
Das gleiche gilt für args[0]
. Es enthält "get"
, aber das Feld value
enthält ['g','e','t',' ','H','e','l','l','o']
!
Was zum Teufel !!!
Allerdings, wenn ich meine HashTable
, wo immer der Schlüssel ist "Hello"
, der Wert = ['H','e','l','l','o']
.
Irgendwelche Ideen?
Vielen Dank.
EDIT:
Ist hier kommen Codebeispiel. Das Gleiche passiert immer noch.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Hashtable;
public class InputTest
{
public static void main(String[] args)
{
BufferedReader reader = new BufferedReader(new InputStreamReader( System.in));
Hashtable<String, String> EngToSpa = new Hashtable<String, String>();
// Adding some elements to the Eng-Spa dictionary
EngToSpa.put("Hello", "Hola");
EngToSpa.put("Science", "Ciencia");
EngToSpa.put("Red", "Rojo");
// Reads input. We are interested in everything after the first argument
do
{
System.out.print("> ");
try
{
args = reader.readLine().trim().split("\\s");
} catch (IOException e)
{
e.printStackTrace();
}
} while (args[0].equals("") || args.length < 2);
//^We don't want empty input or less than 2 args.
// Lets go get something in the dictionary
System.out.println("Testing arguments");
if (!EngToSpa.contains(args[1]))
System.out.println("Word not found!");
else
System.out.println(EngToSpa.get(args[1]));
// Now we are testing the word "Hello" directly
System.out.println("Testing 'Hello'");
if (!EngToSpa.contains("Hello"))
System.out.println("Word not found!");
else
System.out.println(EngToSpa.get("Hello"));
}
}
Das gleiche passiert immer noch. Ich muss Hash-Tabellen falsch verstehen. Ideen, wo etwas schief läuft?
Da Ihr Problem darin besteht, Einträge in eine Hash-Tabelle einzugeben und abzurufen, geben Sie diesen Code ein. Die Relevanz des Codes ist nicht klar. – erickson