在java中从右侧读取文件

Posted

技术标签:

【中文标题】在java中从右侧读取文件【英文标题】:reading the file from right side in java 【发布时间】:2021-04-07 16:42:00 【问题描述】:

假设文件sample.txt内容为:

1 casual 1 3 5 5
2 casual 5 2 5 3
3 casual 1 5 4 3
4 dress 4 5 4 4
5 athletic 2 4 5 2

现在,我想要的是取最后四个数字,并可能将每个数字与将从用户那里获取的另外四个数字相乘:

取第一行的最后四位数字,即 1 3 5 5 那么:

input1x1 + input2x3 + input3x5+ input4x5 = 结果。

任何人都可以帮助我如何实现这一点,这是我到目前为止编写的代码,它可以读取文件然后转换为列表。 :

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

public class Main
public static void main(String[] args) throws FileNotFoundException

    FileReader n = new FileReader("sample.txt");
    Scanner in = new Scanner(n);

    ArrayList<String> lines = new ArrayList<String>();

    while (in.hasNext()) 
        lines.add(in.nextLine());
    

    in.close();
    System.out.println(lines.get(1));
    // for (int i = 0; i<lines.size()-1; i++) 
    //     System.out.println(lines.get(i));
    // 



【问题讨论】:

是用户读取的 4 个数字,它们适用于文件的所有行,还是每行都读取? 【参考方案1】:

运行上述代码后,这会从用户那里获取 4 个整数并将它们与您的文件编号相乘

    Scanner sc = new Scanner(System.in);
    for(int i = 0; i < lines.size(); i++) 

          String[] number = lines.get(i).split(" ");
          int result = 0;
          for (int x=2;x<=5;x++) 
          result += Integer.parseInt(number[x]) * sc.nextInt();
          

          System.out.println(result);
        

【讨论】:

【参考方案2】:
for(int i = 0; i < lines.size() - 1; i++) 
  String line = lines.get(i);
  String[] parts = line.split(" ");
  int result = 0;
  result += Integer.parseInt(parts[2]) * 1;
  result += Integer.parseInt(parts[3]) * 3;
  result += Integer.parseInt(parts[4]) * 5;
  result += Integer.parseInt(parts[5]) * 5;
  System.out.println(line + " -> " + result);

【讨论】:

好吧 .. 触感不错。谢谢你。 :) 为什么你让 for 循环持续到 * lines.size() - 1 * 而不仅仅是 *lines.size() * 不知道,我只是从问题中复制了代码。也许跳过一个空的尾随行。

以上是关于在java中从右侧读取文件的主要内容,如果未能解决你的问题,请参考以下文章

Java中从文件中读取数据用啥函数

java中从txt文件读取数据以及写数据到txt文件

在 iPhone 模拟器中从硬盘读取文件

在 Golang 中从 AWS S3 读取文件

在 Swift 中从 json 文件中读取数据的正确方法是啥?

在c ++中从文件中读取整行