Чтение ввода до EOF в Java
В C++, если я хочу прочитать ввод до EOF, я могу сделать это следующим образом
while(scanf("%d",&n))
{
A[i]=n;
i++;
}
Затем я могу запустить этот код как./a.out
12 ответов
Вы можете сделать это:
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
}
Дайте мне знать, если у вас возникнут трудности.
Вот эквивалентный Java-код с использованием классов BufferedReader и FileReader.
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 спросит вас имя файла, когда вы запустите файл.
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);
}
Вот мой эквивалентный код 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.
Этот ответ также отлично подходит для решения проблемы EOF Hackerrank
Вот эквивалентный Java-код с использованием классов BufferedReader и FileReader.
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;
}
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). Он возвращает 1, если достигнут EOF или если FileHandle не открыт и не определен во всех остальных случаях.
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++;
}
}
}
В 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++;
}
Простое решение будет использовать 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);
}
}
}