java - 如何从控制台拆分用户输入?

标签 java

如何将一行用户输入拆分为单独的字符串并存储,例如,如果输入格式如下(对于结果图表)..

home_name : away_name : home_score : away_score

我如何将输入分成 4 个不同的部分并分别存储? (只会提示用户按上述格式输入,我正在使用while循环继续询问行结果,直到用户输入停止)。

最佳答案

如果输入数据的格式一致,那么您可以简单地使用类似 : 的模式并执行以下操作:

public static void main(String[] args) {
    /* Scan Inputs */
    Scanner in = new Scanner(System.in);

    /* Input String */
    String input = null;

    /* Create StringBuilder Object */
    StringBuilder builder = new StringBuilder();

    String[] headers = { "home_name: ", "away_name: ", "home_score: ",
            "away_score: " };
    while (null != (input = in.nextLine())) {
        /* Break if user enters stop */
        if ("stop".equalsIgnoreCase(input)) {
            break;
        }

        /* Trim the first and the last character from input string */
        input = input.substring(1, input.length() - 1);

        /* Split the input string using the required pattern */
        String tokens[] = input.split(" : ");

        /* Print the tokens array consisting the result */
        for (int x = 0; x < tokens.length; x++) {
            builder.append(headers[x]).append(tokens[x]).append(" | ");
        }
        builder.append("\n");
    }

    /* Print Results & Close Scanner */
    System.out.println(builder.toString());
    in.close();
}

注意这里我使用了substring()摆脱<的功能和 >在使用给定模式拆分输入字符串之前,在输入字符串的开头和结尾。

输入:

<manchester united : chelsea : 3 : 2>
<foobar : foo : 5 : 3>
stop

输出:

home_name: manchester united | away_name: chelsea | home_score: 3 | away_score: 2 | 
home_name: foobar | away_name: foo | home_score: 5 | away_score: 3 | 

关于java - 如何从控制台拆分用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41473861/

相关文章:

java - 在 Windows 任务栏上显示 JDialog

java - 连接到 Apache Kafka 多节点集群中的 Zookeeper

java - 导入模块后 list 合并失败

java - 改变多维列表的特定行

java - 如何在Java中解析和修改HTML文件

java - 通过 dropwizard 验证,我可以访问数据库来插入记录吗

java - Java 中的选择排序,我可以如何改进代码?

java - Maven 编译 String.format 时出错

JavaHelp系统帮助

java - 我的 java exe 无法连接到 sql 数据库,但如果我使用我的 IDE,它就可以工作