9

在 C++ 中,如果我希望在 EOF 之前读取输入,我可以通过以下方式进行

while(scanf("%d",&n))
{
    A[i]=n;
    i++;
}

然后我可以将此代码作为 ./a.out < input.txt 运行。这段代码的java等价物是什么?

4

12 回答 12

20

你可以这样做:

Scanner s = new Scanner(System.in);
while (s.hasNextInt()) {
    A[i] = s.nextInt();
    i++;
}
于 2012-12-18T06:18:27.790 回答
11
// assuming that reader is an instance of java.io.BufferedReader
String line = null;
while ((line = reader.readLine()) != null) {
    // do something with every line, one at a time
}

如果您遇到困难,请告诉我。

于 2012-12-18T06:19:46.693 回答
3
 import java.io.BufferedReader;
 import java.io.FileReader;

BufferedReader br = null;  
     br = new BufferedReader(new FileReader(file));
       while ((line = br.readLine()) != null) {              

     }

    //using Scanner class

    Scanner scanner = new Scanner(file);
    while (scanner.hasNextLine()) {
      String line = scanner.nextLine();
      System.out.println(line);
   }
于 2012-12-18T06:19:23.573 回答
3

这是使用 BufferedReader 和 FileReader 类的 Java 等效代码。

  import java.io.BufferedReader;
  import java.io.FileReader;
  import java.io.IOException;

  public class SmallFileReader {
        public static void main(String[] args) throws IOException {  

选项 1:
String fileName = args[0];
BufferedReader br = new BufferedReader(new FileReader(fileName));
选项 2:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter a file name: ");
String fileName = br.readLine();

             //BufferedReader br = new BufferedReader(new FileReader("Demo.txt"));
             String line=null;
             while( (line=br.readLine()) != null) {
                    System.out.println(line);  
             }
  }
}  

我对@Vallabh 代码做了一点修改。@tom 如果要通过命令行输入文件名,可以使用第一个选项。
java SmallFileReader Hello.txt
选项 2 会在您运行文件时询问您的文件名。

于 2012-12-18T07:38:06.473 回答
2

这是使用 BufferedReader 和 FileReader 类的 Java 等效代码。

  import java.io.BufferedReader;
  import java.io.FileReader;
  import java.io.IOException;

  public class SmallFileReader {
        public static void main(String[] args) throws IOException {
             BufferedReader br = new BufferedReader(new FileReader("Demo.txt"));
             String line=nul;
             while( (line=br.readLine()) != null) {
                    System.out.println(line);  
             }
  }
}
于 2012-12-18T06:20:11.897 回答
1

唯一对我有用的东西(你甚至不必创建文件)

Scanner read = new Scanner(System.in);
String cadena;
boolean cond = true;
int i =0;
while (cond){
    cadena = read.nextLine();
    if(cadena.isEmpty())
        cond = false;
}
于 2014-02-24T03:08:36.730 回答
0

这是我的 Java 等效代码,用于在文件结束之前读取输入:

import java.util.Scanner;

public class EndOfFileSolutions {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        for(int i = 1; sc.hasNext()== true; i++){
            System.out.println(i + " " + sc.nextLine());
        }
    }
}

此代码将产生如下所示的输出 -

样本输入:

Hello world
I am a file
Read me until end-of-file.

样本输出:

1 Hello world
2 I am a file
3 Read me until end-of-file.

这个答案也可以很好地解决Hackerrank EOF 问题

于 2019-08-23T12:09:34.417 回答
0
Scanner scanner = new Scanner(System.in);
int c = 0;
while(scanner.hasNext()){
  System.out.println(++c + " " + scanner.nextLine());
}
scanner.close();
// use while instead of normal for loop. 
// If you need to read a file than BufferReader is the best way to do it, as explained above.
于 2020-10-03T18:49:59.793 回答
0

eof() 函数用于检查是否到达文件结尾 (EOF)。如果达到 EOF 或 FileHandle 未打开且在所有其他情况下未定义,则返回 1。

于 2022-02-08T17:41:29.680 回答
-1

一个简单的解决方案是使用Scanner类。

见下面的片段:

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

public class Solution {

    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);
        while(s.hasNextLine())
        {
            String line = s.nextLine();
            System.out.println(line);
        }
    }
}
于 2018-12-07T09:26:32.373 回答
-1

在 Java 中,直到 EOF 的一种阅读方式是:-

     Scanner scan = new Scanner(System.in);    
     while(scan.hasNextLine())   //read until condition is true
     {
        String line = scan.nextLine();
        System.out.println(line);
        i++;
     } 
于 2020-05-30T12:31:32.407 回答
-1

EOF 或行尾..!可以在单个while循环条件中实现..!!,直到条件有效循环运行并从用户那里获取输入。“.hasNextLine”,正在检查是否有另一个输入行。例如,我正在使用 Hackerrank 练习。希望这对你有帮助。

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

public class Solution {

    public static void main(String[] args) {
        int i=1;
        Scanner sc = new Scanner(System.in); // Making Scanner object
        while(sc.hasNextLine()){            // This is the main condition for EOF  
            String line = sc.nextLine();
            System.out.format("%d %s\n",i,line);
            i++;
        } 
    
      
    }
}
于 2021-01-03T07:35:13.517 回答