当前位置: 首页 > 知识库问答 >
问题:

读取txt文件。在每一行旁边显示整数之和

孔欣荣
2023-03-14

45 90 40 30 42 95 64 47 23

14 80 30 84 24 49 16 10 20

我是Java OOP的初学者,这是Txt文件。我必须在每行旁边打印整数的和,然后找出其中最大的和。

我可以读取文件,我试着把每一行都做成一个字符串,但当我把每一行的每一个数字都做成一个整数时,我想不出如何在列结束时停止程序,这样我就可以打印和并转到下一行。

import java.util.Scanner;
import java.io.*;

public class Asst1Problem2{


   public static void main(String[] args){

   int sum = 0;
   int largestSum = 0;

   String line = "";

   try{

      Scanner input = new Scanner(new File("integers2.txt"));


      while(input.hasNextLine()){

         line = input.nextLine();

         System.out.println(line);


      }

   }

   catch(FileNotFoundException fnf){

         System.out.print("no file "  + fnf);

   }

   }
} 

我本想得到总数,但我做得不对。

共有2个答案

狄奕
2023-03-14
Scanner input = new Scanner(new File("integers2.txt"));

int maxSum = -1; //Assuming there are no negative values
while(input.hasNextLine()) {
   line = input.nextLine();
   String[] splitted = line.split(" "); //Split the spaces from the line

   int sum = 0;

   for (int i = 0; i < splitted.length; i++) {
       int value = Integer.parseInt(splitted[i]); //Convert the string into an integer
       sum += value;
   }

   System.out.println(sum); //This line sum

   if (sum > maxSum) {
       maxSum = sum;
   }
}

System.out.println(maxSum); //The biggest sum
柳星晖
2023-03-14

您好,您可以使用循环或流(java 8)来解决这个问题。我还建议您使用try-with-Resources。

如果没有流,可以使用以下示例


public static void main(String[] args) {
    int largestSum = 0;
    try (Scanner input = new Scanner(new File("integers2.txt"))) {
        while (input.hasNextLine()) {
            String[] numbers = input.nextLine().split(" ");
            int sum = 0;
            for (String s : numbers) {
                if (s.matches("^\\d+$")) { // check if the element was an integer number. 
                    int i = Integer.parseInt(s);
                    sum += i;
                }
            }
            System.out.printf("current sum = %s \\n", sum); // print current sum
            largestSum = Math.max(sum, largestSum);
        }
    } catch (FileNotFoundException fnf) {
        System.out.print("no file " + fnf.getMessage());
    }
    System.out.println(largestSum);
}

有关检查字符串是否为整数的更多详细信息

使用java-8流,以下代码应该可以做到:

public static void main(String[] args) {
    int largestSum = 0;
    try (Scanner input = new Scanner(new File("integers2.txt"))) {
        while (input.hasNextLine()) {
            String[] numbers = input.nextLine().split(" ");
            int sum = Arrays
                            .stream(numbers)
                            .filter(s -> s.matches("^\\d+$"))
                            .mapToInt(s -> Integer.parseInt(s))
                            .sum();
            System.out.printf("current sum = %s \\n", sum); // print current sum
            largestSum = Math.max(sum, largestSum);
        }
    } catch (FileNotFoundException fnf) {
        System.out.print("no file " + fnf.getMessage());
    }
    System.out.println(largestSum);
}
 类似资料:
  • 问题内容: 如何从.txt文件读取和显示数据? 问题答案: 然后,您可以使用in.readLine(); 一次读取一行。要读到最后,可以这样编写while循环:

  • 我正在试着阅读我的文件的每一行,其中包含一个用户名列表,并用它创建一个登录系统。我正在尝试实现一个基本的登录系统,它的用户名存储在.txt文件中,但我的代码不工作,我不知道为什么。我认为问题出在检查用户名的循环中。 这是我的代码,但它不起作用,只是打印总是失败: 有什么想法吗?

  • 所以,我试图让我的程序从文本文件中读入一个结构数组,它编译得很好,但看起来并没有真正读入值?...我不知道为什么。这是代码的相关部分: 这是txt文件(标题:Planets.txt) 水星120 50 500 12.1 30 2金星120 50 500 29.1 30 6地球120 50 500 32.2 30 7月亮120 15 50 5.3 30 2火星120 50 500 12.2 30 4

  • 我正试图编写一个程序,读取网络中相互交互的节点列表。它以以下格式写入文本文件: 这表示节点1与节点2和节点3交互,节点2仅与节点3交互,等等。 该程序将能够读取该文件,并将删除任何重复的交互,并且如果我输入节点的名称,将能够向我返回节点与其他节点的交互次数。然而,我对Java非常陌生,我首先尝试让它读入文件,尽管我的代码目前没有读入文件。以下是我迄今为止的代码: 任何关于如何解决此问题的帮助都将不

  • 问题内容: 我会尽量保持清楚,但如果我的问题不完美,请原谅我。我有一个包含多行数据的txt文件。例: 123拉尔夫·玻色20000 200 1 2 256 ed shane 30000 100 2 4 … 我需要按顺序读取每一行,并将其传递回单独类中的方法进行处理。我知道如何通过使用StringTokenizer将每一行分解为元素。 但是,我不确定如何一次读取一行,将元素传递回另一类,然后在完成处

  • 我一直在互联网上寻找帮助,但我找不到,所以我求助于发帖。 我有一个txt文件,格式如下 1/2 0 1/6 6/11 1/6 2/10 我需要读取这些单独的分数,并输入分子和分母的函数称为BigFraction(num,denom)。 我调用读取器并将其作为字符串输出。然后,我在空格上进行拆分,以获得作为字符串的各个分数,并将它们输入到我的助手方法strToBF中,该方法在正斜杠上进行拆分,并输入