gpt4 book ai didi

java - Java 处理输入时出现问题

转载 作者:行者123 更新时间:2023-12-02 08:38:15 25 4
gpt4 key购买 nike

我正在尝试从终端读取输入。为此,我使用 BufferedReader。这是我的代码。

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

在我的代码的其他地方,我有一个HashTable,其中键和值都是字符串。问题是这样的:

如果我想从 HashTable 获取一个值,其中我用来在 HashTable 中查找的键是 args 元素之一。这些参数很奇怪。如果用户输入两个参数(第一个是命令,第二个是用户想要查找的参数),我找不到匹配项。

例如,如果哈希表包含以下值:

[ {"Hello":"World"}, {"One":"1"}, {"Two":"2"} ]

用户输入:

get Hello

我的代码不返回“World”

所以我使用调试器(使用 Eclipse)来查看 args 内部的内容。我发现 args[1] 包含 "Hello" 但在 args[1] 中有一个名为 value 的字段> 其值为['g','e','t',' ','H','e','l','l','o']

args[0] 也是如此。它包含 "get" 但字段 value 包含 ['g','e','t',' ','H','e' ,'l','l','o']!

什么鬼!!!

但是,如果我检查我的 HashTable,无论键是 "Hello",值=['H','e','l ','l','o'].

有什么想法吗?

非常感谢。

<小时/>

编辑:

这是代码示例。同样的事情还在发生。

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

}
}

同样的事情还在发生。我一定是误解了哈希表。哪里出了问题?

最佳答案

不用担心 value 字段 - 这只是说有一个包含“get Hello”文本的 char 数组,并且 args[0] 和 args[1] 引用那个 char 数组,但它们有不同的偏移量和计数。 args[0] 的偏移量为 0,计数为 3; args[1] 的偏移量为 4,计数为 5。

我不知道为什么你的 HashMap 不起作用......你能提供一个简短但完整的示例程序吗?

关于java - Java 处理输入时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/711867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com