java - 如何在Java中获取部分用户输入?

标签 java arrays string input java.util.scanner

我想制作一个java程序,它将获取用户输入的一部分并将其存储起来以便以后使用。 我的输入看起来像这样:

Mary market 8 theatre 80 end
John books 45 end 

第一个字段表示该人的姓名,然后是一系列费用以及他们捐钱的原因名称。单词结束表示每个人的输入结束。

我的问题是如何将人们的姓名字段及其支出分开,以便我可以输出每个人的平均支出?

最佳答案

这实际上取决于,如果您严格同意输入数据始终具有与示例中相同的格式,那么您可以简单地使用字符串 .split("") 并读取所有内容每行的数字。

示例:

// or any other input, eg: List, BufferedReader, etc
String[] lines = new String[] {
        "Mary market 8 theatre 80 end",
        "John books 45 end"
};
for (String line : lines) {
    String[] raw = line.split(" ");
    String name = raw[0];

    for (int i = 1; i < raw.length; i += 2) {
        if (raw[i].equals("end")) break;
        String expenseName = raw[i];
        int cost = Integer.parseInt(raw[i+1]); 
        ... 
    }
}

但如果不是,那么最好使用 RegExp 并查找每行中的所有数字。

示例:

// or any other input, eg: List, BufferedReader, etc
String[] lines = new String[] {
        "Mary market 8 theatre 80 end",
        "John books 45 end"
};

Pattern p = Pattern.compile("\\d+");
for (String line : lines) {
    Matcher m = p.matcher(line);
    while(m.find()) {
        int cost = Integer.parseInt(m.group());
        ...
    }
}

关于java - 如何在Java中获取部分用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61225084/

相关文章:

java - 从 Facebook 页面获取所有帖子和评论

java - 您如何断言在 JUnit 测试中抛出了某个异常?

java - Android ViewPager,fragment 中的cameraview 不显示

c++ - C++中的字符数组及其内存分配

c# - 如何将许多字符的组合更改为其中一种

java - 解析不同格式的日期的推荐方法是什么?

java - 如何获取hibernate实体的方言特定sql?

c++ - 在函数中传递 char 数组?

c - 将提取的帧名称存储在数组中 - ffmpeg

java - 在字符串中查找中间词的输出没有按预期出现?