如何在Java中读取.txt文件中一行上的最后一组数字
我当前有一个如下所示的文本文件:如何在Java中读取.txt文件中一行上的最后一组数字,java,input,output,Java,Input,Output,我当前有一个如下所示的文本文件: Bob Peach 1000 115 Hugh Mungus 1001 250 Joe Bloggs 1003 555 Joe Walsh 1004 6 Ben Davis 1005 1 There are currently 927 points. 我需要读取行中最后一组数字,将它们相加,然后将答案输出到单独的文本文件中。我该怎么办 编辑:预期结果应该是输出文件中的字符串,如下所示: Bob Peach 1000 115 Hugh Mungus 1001
Bob Peach 1000 115
Hugh Mungus 1001 250
Joe Bloggs 1003 555
Joe Walsh 1004 6
Ben Davis 1005 1
There are currently 927 points.
我需要读取行中最后一组数字,将它们相加,然后将答案输出到单独的文本文件中。我该怎么办
编辑:预期结果应该是输出文件中的字符串,如下所示:
Bob Peach 1000 115
Hugh Mungus 1001 250
Joe Bloggs 1003 555
Joe Walsh 1004 6
Ben Davis 1005 1
There are currently 927 points.
编辑2:很抱歉没有更好地解释它,但我现在已经修改了虚拟文件的外观,使用实际名称而不仅仅是占位符。正如你所看到的,最后一组数字前的字符数量并不总是相同的
编辑3:这是我在等待回复时尝试过的方法,通常我认为应该是这样的
public void processFiles()
{
total = 0;
while(input.hasNextInt())
{
input.nextInt();
total = total + input.nextInt();
input.nextLine();
}
output.print("There are all together " +
total + " points.");
}
但是,上面的代码仅输出0点
编辑4:
public void processFiles()
{
total = 0;
while(input.hasNext())
{
String line = input.nextLine();
String[] splitLine = line.split(" ");
total += Integer.parseInt(splitLine[splitLine.length - 1]);
}
output.print("There are all together " +
total + " points.");
}
如果字符串的行数始终相同,则可以这样做
String LikesDislikes = "Likes: 10
Dislikes:10"
String[] lines = LikesDislikes.split("\\n");
String likes = lines[0];
String dislikes = lines[1];
如果字符串的行数始终相同,则可以这样做
String LikesDislikes = "Likes: 10
Dislikes:10"
String[] lines = LikesDislikes.split("\\n");
String likes = lines[0];
String dislikes = lines[1];
假设只有行项目提供的信息由单个空格分隔,并且最后一个项目始终是您想要的数字,则可以读取文件中的每一行,并在每一行上执行以下操作
String[] splitLine = line.split(" ");
total += Integer.parseInt(splitLine[splitLine.length - 1]);
阅读文件并循环浏览每一行是读者的一项练习。假设只有提供的信息行项目由单个空格分隔,并且最后一项始终是您想要的数字,您可以阅读文件中的每一行,并在每一行上执行以下操作
String[] splitLine = line.split(" ");
total += Integer.parseInt(splitLine[splitLine.length - 1]);
阅读文件并循环每一行是留给读者的练习。试试这样的方法 您只需逐行读取文件,使用空格字符拆分每行,然后将行的最后一部分转换为整数
试试这样的 您只需逐行读取文件,使用空格字符拆分每行,然后将行的最后一部分转换为整数
不幸的是,它总是有不同的行数。不幸的是,它总是有不同的行数。你应该发布你的预期结果,以及到目前为止你尝试了什么?我目前处于困境,但我尝试使用Scanner.nextInt将其指向第一组数字,但是从那以后,我想不出如何让它使用最后一组。只要再打一次Scanner.nextInt。你是什么意思,phatfingers?我现在已经包括了我的解释。@Dacnomanic砖墙比混凝土好;-你试过我的解决办法吗?顺便说一句,这与罗杰的建议是一致的……你应该公布你的预期结果,以及到目前为止你尝试了什么?我目前正处于困境,但我尝试使用Scanner.nextInt将其指向第一组数字,但是从那以后,我想不出如何让它使用最后一组。只要再打一次Scanner.nextInt。你是什么意思,phatfingers?我现在已经包括了我的解释。@Dacnomanic砖墙比混凝土好;-你试过我的解决办法吗?顺便说一句,这与Roger的建议是一致的……我想我遗漏了一些东西,因为每当我尝试使用它进行编译时,我都会收到一个错误,说“找不到符号-行”。@Dacnomaniac,在这个示例中,行是您从文件中为每行读取的字符串。@Dacnomaniac,您可以在Plirkee的示例中看到行的来源。我想我遗漏了一些东西,因为每当我尝试使用它进行编译时,我都会收到一个错误消息“找不到符号-行”。@Dacnomaniac,在这个示例中,行将是您从文件中为每行读取的字符串。@Dacnomaniac,您可以在Plirkee的示例中看到线条的来源。@Piklee在熟睡之后,我尝试了您的解决方案,但使用了scanner类的一部分,但它并没有像我预期的那样工作,仍然将点的总和输出为0。请参阅“编辑”以查看它现在的外观。@Dacnomaniac如果您正在使用scanner。。。那么这不完全是我的解决方案,是吗?另外,你发布的是部分代码。。。从中看不到输入变量是什么。。。我们只能猜测你的代码出了什么问题。我建议调试时使用断点,在每次迭代时打印line和splitLine[]以及total的值,这样您就会发现确切的问题。。。并且可能会在不需要任何外部帮助的情况下修复它…@Piklee在使用它之后,我尝试了您的解决方案,但使用了scanner类的部分内容,但是它没有按照我的预期工作,并且仍然将点的总和输出为0。请参阅“编辑”以查看它现在的外观。@Dacnomaniac如果您正在使用scanner。。。那么这不完全是我的解决方案,是吗?另外,你发布的是部分代码。。。从中看不到输入变量是什么。。。我们只能猜测你的代码出了什么问题。我建议调试时使用断点,在每次迭代时打印line和splitLine[]以及total的值 n-这样你就会找到确切的问题。。。而且可能会在不需要任何外部帮助的情况下修复它。。。