在 C++ 中,如果我希望在 EOF 之前读取输入,我可以通过以下方式进行
while(scanf("%d",&n))
{
A[i]=n;
i++;
}
然后我可以将此代码作为 ./a.out < input.txt 运行。这段代码的java等价物是什么?
你可以这样做:
Scanner s = new Scanner(System.in);
while (s.hasNextInt()) {
A[i] = s.nextInt();
i++;
}
// 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
}
如果您遇到困难,请告诉我。
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);
}
这是使用 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 会在您运行文件时询问您的文件名。
这是使用 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);
}
}
}
唯一对我有用的东西(你甚至不必创建文件)
Scanner read = new Scanner(System.in);
String cadena;
boolean cond = true;
int i =0;
while (cond){
cadena = read.nextLine();
if(cadena.isEmpty())
cond = false;
}
这是我的 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 问题
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.
eof() 函数用于检查是否到达文件结尾 (EOF)。如果达到 EOF 或 FileHandle 未打开且在所有其他情况下未定义,则返回 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);
}
}
}
在 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++;
}
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++;
}
}
}