文件io字符串方法java赋值
所以我的一项任务有点麻烦。我似乎不知道我需要做什么。问题是:
阅读分数的分配依据如下:前三本书每本价值10分。接下来读的三本书各得15分。所有超过六本的书每本都得20分。阅读7本书的学生将获得95分(前三本30分,后三本45分,第七本20分)
外部文件包含一个名字和姓氏,后跟一个整数(阅读的图书数量)
打印每个人的姓名、阅读的书籍数量和获得的分数。姓名的顺序应该是倒数第二,第一,所有大写字母中只有姓氏。在列表的底部,打印出所有读者和竞赛获胜者的平均分
所需语句:输入、输出、决策、循环控制、字符串
数据位置:prog700c。dat
样本输出:
Reading Contest
Name Books Points
SUMMER Sam 4 45
LAZY Linda 2 20
PRODDER Paul 5 60
MASTER K.C. 8 115
READER Richie 6 75
Average points per reader = 63.0
The winner of the contest is K.C. Master
外部文件数据如下所示:
SUMMER Sam 4
LAZY Linda 2
PRODDER Paul 5
MASTER K.C. 8
READER Richie 6
我当前的代码:
import java.io.*;
import java.util.*;
public class Prog505a
{
public static void main(String[] args)
{
Scanner kbReader = new Scanner(new File("C:\\Users\\Guest\\Documents\\java programs\\Prog700c\\Prog700c.in"));
String data = kbReader.nextLine();
while(kbReader.hasNextLine())
{
我遇到了一个问题,我不知道使用什么字符串方法来只从外部文件获取数字,以便在计算中使用它们。我知道我可以做决策,等等。但我只是不知道在这一部分要做什么才能从外部文件中获得数字。如果有人能提供一些指导,我们将不胜感激。谢谢大家!
# 1 楼答案
您可以使用
String.split("\\s+")
将行拆分为三个部分(检查它们是否为三个部分以确保安全,打印警告,如果不是,则跳过)。这将返回一个字符串数组。您可以使用Integer.parseInt()
读取数组中第三项的图书数量(位置2,Java中的数组是“基于零的”)请注意
"\\s+"
是一个正则表达式,用于查找空格的一个或多个部分。返回空格内的字符串和字符串的开头/结尾。如果不允许使用正则表达式,请尝试在字符串中查找空格字符的索引,并使用String.substring()
-并且不要忽略字符串操作的返回值或者,您可以在扫描仪中使用
next()
、next()
和nextInt()
而不是nextLine()
# 2 楼答案
你可以使用正则表达式来表达你的意思: 尝试使用类似以下内容:
这样,您将删除字符串中的所有非数字。之后,您需要将字符串解析为整数或任何其他数字类型