java - 将文件读入数组返回错误的元素

标签 java arrays file input output

我正在尝试从用户那里获取输入,然后如果它与现有文件之一匹配,则读取该文件并将单词、字母或数字放入一个数组中。 “单词”和“字母”文件似乎工作正常,但“数字”给我带来了问题。它找到文件,读取它,将它放入一个数组中,并给出数字的总和;然而,数组的输出是每隔一个数字,而不是所有数字,就像它应该做的那样。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;

public class fileIO
{
    public static void main (String[] args) throws FileNotFoundException
    {
        String filename;
        System.out.println("Please enter name of file (alphabet,words,numbers): ");
        Scanner input = new Scanner(System.in);
        filename = input.nextLine();


        if(filename.equals("numbers"))
        {
            int sum = 0;
            Scanner reader = new Scanner(new File("/home/ninjew/workspace/FileIO/src/" + filename + ".txt"));
            ArrayList<Integer> arr = new ArrayList<Integer>();
            while(reader.hasNext())
            {
                arr.add(reader.nextInt());
                sum = sum + reader.nextInt();
            }
            System.out.println(arr);
            System.out.println("The summation is: " + sum);
            reader.close();
        }

        else if(filename.equals("words") || filename.equals("alphabet"))
        {
            Scanner reader = new Scanner(new File("/home/ninjew/workspace/FileIO/src/" + filename + ".txt"));
            // This is for words and letters within the file. Print words and letters.
            ArrayList<String> arr = new ArrayList<String>();

            while(reader.hasNext())
            {
                String line = reader.next();

                Scanner scanner = new Scanner(line);
                scanner.useDelimiter(",");
                while(scanner.hasNext()){
                    arr.add(scanner.next());
                }
                scanner.close();
            }
            System.out.println(arr);
            reader.close();

        }
    }
}

最佳答案

if(filename.equals("numbers")) 中,您正在对该 block 中的文件进行两次读取,这就是它跳过数字的原因

        while(reader.hasNext())
        {
            arr.add(reader.nextInt());
            sum = sum + reader.nextInt();
        }

应该是

        while(reader.hasNext())
        {
            int val = reader.nextInt();
            arr.add(val);
            sum = sum + val;
        }

关于java - 将文件读入数组返回错误的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32464730/

相关文章:

java - Java 中的向上转型和两个独立的对象属性

java - Java中变量赋值的可见性

java - 从大整数构造公钥?

c - 从文件中删除记录?

c - 用C做回文检查器

java - 将数组值加载到类中

javascript - 如何在javascript中组合两个对象?

arrays - 测试对象是否存在于 Swift 数组中的简写?

ios - 如何在选择器 View 中填充 "ArrayYear"?

java - 多线程写入文本文件