java - 如何在 Java 中获取部分用户输入?
问题描述
我想制作一个Java程序,它将获取用户输入的一部分并将其存储起来以便以后使用。我的输入看起来像这样:
Mary market 8 theatre 80 end
John books 45 end
第一个字段表示此人的姓名,然后是一系列费用以及他们提供资金的原因名称。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());
...
}
}
推荐阅读
- c - 在确定大数是否为质数时,如何使此 C 代码运行得更快?
- android - 是否可以创建在奥利奥后设备上运行的警报应用程序
- c++ - 在具有两个“For 循环”的函数中使用默认参数
- laravel - Laravel Livewire 绑定模型 Carbon 属性
- javascript - 反应语义日期选择器禁用选择过去的日期
- html - 为 div 内的文本添加右填充
- android - RecyclerView is loading items , but not scrolling. Onclick does not work either
- windows - PowerShell - 重命名文件夹
- javascript - 如何删除一个对象并将其添加到javascript中的数组中?
- javascript - 如何在 Materialise 3-D carousel 中添加任何图像?