有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

文件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())
    {

我遇到了一个问题,我不知道使用什么字符串方法来只从外部文件获取数字,以便在计算中使用它们。我知道我可以做决策,等等。但我只是不知道在这一部分要做什么才能从外部文件中获得数字。如果有人能提供一些指导,我们将不胜感激。谢谢大家!


共 (2) 个答案

  1. # 1 楼答案

    您可以使用String.split("\\s+")将行拆分为三个部分(检查它们是否为三个部分以确保安全,打印警告,如果不是,则跳过)。这将返回一个字符串数组。您可以使用Integer.parseInt()读取数组中第三项的图书数量(位置2,Java中的数组是“基于零的”)

    请注意"\\s+"是一个正则表达式,用于查找空格的一个或多个部分。返回空格内的字符串和字符串的开头/结尾。如果不允许使用正则表达式,请尝试在字符串中查找空格字符的索引,并使用String.substring()-并且不要忽略字符串操作的返回值

    或者,您可以在扫描仪中使用next()next()nextInt()而不是nextLine()

  2. # 2 楼答案

    你可以使用正则表达式来表达你的意思: 尝试使用类似以下内容:

    str = str.replaceAll("\\D+","");
    

    这样,您将删除字符串中的所有非数字。之后,您需要将字符串解析为整数或任何其他数字类型