如何从Java文件中读取一行中的每个整数?

时间:2019-05-26 14:55:10

标签: java file bufferedreader filereader

我的文件包含n行整数。我想在每行中添加每个int并打印它们(因此我应该在末尾打印3个int,每行一个一行)。

我尝试过此操作,但是它将在第一个循环中读取并添加所有Integer。

scan = new Scanner(new BufferedReader(new FileReader("input.txt")));
int n = scan.nextInt();
for (int i = 0; i < n; i++) {
    while (scan.hasNextLine()) {
         sum += scan.nextInt();
    }
    System.out.println(sum);
    sum = 0;
}

2 个答案:

答案 0 :(得分:2)

此行为是由于错误使用循环和扫描引起的。 一种正确的解决方案还结合了Java 8 lambda,并假定文件中整数的定界符为space(“”):

    Path path = Paths.get("your path");
    try{
        Files.lines(path)
                .map( line -> line.split(" "))
                .mapToInt( numbers -> Arrays.stream(numbers)
                   .reduce(0 , (sum, num) -> sum + Integer.parseInt(num), (first, second) -> first + second ))
                .forEachOrdered(System.out::println);

    } catch (IOException e){
        e.printStackTrace();
    }

答案 1 :(得分:0)

我想我也可以这样做...

public class MainActivity extends AppCompatActivity {

Button btn;
EditText edt1,edt2;
ListView itemsListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn=(Button) findViewById(R.id.add_id);
    edt1=(EditText) findViewById(R.id.credit_id);
    edt2=(EditText) findViewById(R.id.gpa_id);
    itemsListView  = (ListView)findViewById(R.id.list_view_items);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CustomListAdapter adapter = new 
CustomListAdapter(MainActivity.this, generateItemsList());
            itemsListView.setAdapter(adapter);
            edt1.setText("");
            edt2.setText("");
        }
    });
}
private ArrayList<Item> generateItemsList() {

    String itemName=edt1.getText().toString();
    String itemDescription=edt2.getText().toString();
    ArrayList<Item> list= new ArrayList<>();
    Item item=new Item(itemName,itemDescription);
    item.getItemName();
    item.getItemDescription();
    list.add(item);
    return list;
}
}