3

如果用户键入,我正在尝试为我的项目编写一个简单的代码

步行 10

我需要在我的步行(距离)方法中使用“步行”命令,因为距离 = 10 我有类似的东西

while (!quit) {
Scanner in = new Scanner(System.in);
String input = in.nextLine();
// if (walk x is typed) {
walk(x);
}
}

我正在使用 java.util.scanner 另一个问题是我的方法 walk(int x) 使用 int 所以我需要将 String 输入转换为 int

我在网上搜索了一段时间,但找不到我要找的东西(或者我不明白)

所以无论如何,如果你能帮助我,我会很感激谢谢

非常感谢所有的答案我最初的问题是固定的,但是现在我有另一个问题 ,当我输入“walk”时,它会得到数组越界异常当然因为它试图将 null 转换为 int(不可能)我试过这个并在网上查了

                    try {
                    Integer.parseInt(splitStrings[1]);
                    }
                    catch(NumberFormatException e) {
                    System.out.println("error: " + e);
                    }

仍然没有帮助(我不擅长尝试/捕捉)所以如果用户输入没有距离的步行,我需要给出错误消息再次非常感谢

好的,我也知道了,只是用了一个简单的东西

            if ("walk".equals(splitStrings[0])) {
                if (splitStrings.length == 2) {
                int distance = Integer.parseInt(splitStrings[1]);
                Robot.walk(distance);
                }
                if (splitStrings.length != 2) {
                    System.out.println("Entry must be like walk 10");
                }
            }
4

6 回答 6

7

您可以拆分空间,在这种情况下,数字将是结果数组的第二个元素(索引 1),例如

编辑 Adam Liss 的以下评论

Integer x = Integer.parseInt(input.split(" ")[1])
于 2012-05-03T02:22:28.277 回答
7

尝试对字符串使用 split() 方法。它将返回一个字符串数组。例如

String s = 'walk 10';
String[] splitStrings = s.split(" ")

现在,要访问 10,您可以这样做:

String distanceToWalk = splitStrings[1]

要将其转换为 int,请在 Integer 上使用 parseInt() 方法

Integer.parseInt(distanceToWalk);

  1. http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split%28java.lang.String%29
  2. http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#parseInt%28java.lang.String%29
于 2012-05-03T02:26:18.167 回答
1

您可以使用以下Integer.parseInt()方法:

int distance = Integer.parseInt(input);
于 2012-05-03T02:22:36.240 回答
0

尝试:

String s = 1;
int i = Integer.parseInt(s); // returns 1
于 2012-05-03T02:23:15.687 回答
0

假设你从字符串中去掉整数部分,例如留下一个输入

"walk 10" 和 "10",只需使用类似

// say you've parsed the "number" portion into a variable "inputString"
int x;
x= Integer.parseInt(inputString);
于 2012-05-03T02:23:53.370 回答
0

你可以使用这个:

// For read the input
InputStreamReader streamReader = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(streamReader);
String input = reader.readLine();

如果您更喜欢使用Scanner,那么

Scanner sc = new Scanner(System.in);
String input = sc.nextLine();

然后:

StringTokenizer st = new StringTokenizer(input);
if (st.countTokens == 2) { // Only for two tokens "walk 100", "return 10"
    String method = st.nextToken();
    if (method.equals("walk") { // if you have more methods like "walk"
        int distance = Integer.parseInt(st.nextToken());
        walk(distance); // walk
    }
}

如果您想阅读更多行

for(String input; sc.hasNextLine();) {
    input = sc.nextLine();

    // do something

}

或者

for(String input; (input = reader.readLine()) != null;) {

    // do something

}
于 2012-05-03T02:29:40.393 回答