Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java分裂输入_Java_String_Input_Split - Fatal编程技术网

Java分裂输入

Java分裂输入,java,string,input,split,Java,String,Input,Split,我正在尝试为我的项目编写一个简单的代码 如果用户类型 步行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(intx)使用int 所以我需要将

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

步行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(intx)使用int 所以我需要将字符串输入转换为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");
                }
            }

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

编辑Adam Liss的以下评论

Integer x = Integer.parseInt(input.split(" ")[1])
您可以使用以下方法:

尝试:


假设从字符串中去掉整数部分,例如留下

“walk 10”加上“10”,只需使用

// say you've parsed the "number" portion into a variable "inputString"
int x;
x= Integer.parseInt(inputString);
尝试对字符串使用split()方法。它将返回一个字符串数组。比如说

String s = 'walk 10';
String[] splitStrings = s.split(" ")
现在,要访问10,您可以执行以下操作:

String distanceToWalk = splitStrings[1]
要将其转换为int,请对Integer使用parseInt()方法

Integer.parseInt(distanceToWalk);

  • 您可以使用以下选项:

    // For read the input
    InputStreamReader streamReader = new InputStreamReader(System.in);
    BufferedReader reader = new BufferedReader(streamReader);
    String input = reader.readLine();
    
    如果您喜欢使用
    扫描仪
    ,则

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

    如果你想多读几行

    for(String input; sc.hasNextLine();) {
        input = sc.nextLine();
    
        // do something
    
    }
    


    它们之间是否有空格?是的,用户键入walk 10或walk 25您可以使用Integer.parseInt来获取整数值,在使用split获得输入行+1中的所有令牌后,您需要获得整数值,以获得整洁的解决方案,尽管假设这是用户输入,您还需要首先去掉多余的空格(否则,您的号码将位于数组中的错误位置).等等,什么???你不能将字符串转换为整数!真为你们所有的投票人感到羞耻。@AdamLiss你绝对正确,相应地修改了答案。@草莓+1用于更新。还有大胆地发布了一个甚至不是有效Java的答案…并且仍然获得了3张投票票!非常感谢。这正是我想要的将输入从空白处拆分为2,并将10转换为整数如何将标记器与java.util.scanner一起使用?我为
    StringTokenizer
    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
    
    }