2015-06-08 3 views
0
import java.io.*; 
import java.util.*; 
import java.text.*; 
import java.math.*; 
import java.util.regex.*; 

public class Solution { 

public static void main(String[] args) { 
    Scanner line = new Scanner(System.in); 
    while (line.hasNextLine()) { 
String line = line.nextLine(); 
int counter = 1; 
System.out.println(counter +" "+line); 
counter++; 
} 
}} 

Задача: Каждая строка будет содержать непустую строку. Читайте до EOF. Для каждой строки напечатайте номер строки, за которым следует одно место и содержимое линии.Java конец файла

Пример ввод: Привет мир

Я файл

Читать меня до конца-файла.

Пример вывод: 1 Привет мир

2 Я файл

-Читать меня до конца-файла.

+0

Ошибка: Не найдено подходящего конструктора для сканера –

+1

Сканер sc = новый сканер (System.in); –

+0

Также вы инициализируете внутреннюю петлю счетчика. –

ответ

0

Для чтения пользовательского ввода, вы должны использовать System.in в вашем объявлении line объекта в коде:

Scanner line = new Scanner(System.in); 
int counter = 0; // Initialized out of loop. 
while (line.hasNextLine()) { 
    String ln = line.nextLine(); 
    System.out.println(counter +" "+ln); 
    counter++; 
} 
1

Documentation состояний, которые вам необходимо пройти Source в сканере, так что он может сканировать из него ,

Чтобы получить пользовательский ввод, вам необходимо использовать конструктор Scanner(InputStream source).

Scanner line = new Scanner(System.in); 

public static void main(String[] args) { 
    Scanner line = new Scanner(System.in); // Added source parameter in constructor. 
    int counter = 1; // Initialization of counter is done outside while loop, otherwise it will always get initialized by 1 in while loop 
    while (line.hasNextLine()) { 
     String lineStr = line.nextLine(); // changed variable name to lineStr, because 2 variable can't be declared with the same name in a method. 
     System.out.println(counter + " " + lineStr); 
     counter++; 
    } 
} 

Примечание: Убедитесь, что вы break ваше время цикла, в противном случае он будет идти в infinite петли.

1

Если вы хотите сканировать из файла, вы можете использовать приведенный ниже код.

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

public class Solution { 

    public static void main(String[] args) throws FileNotFoundException { 
     Scanner scan = new Scanner(new File("input.txt")); 
     int counter = 1; 
     while (scan.hasNextLine()) { 
      String line = scan.nextLine(); 
      System.out.println(counter + " " + line); 
      counter++; 
     } 
    } 
} 
1
  1. Вы не можете иметь несколько переменных без того же имени. Вы должны переименовать одну из своих line переменных.
  2. При создании сканера вам необходимо отправить входящий поток, с которого вы хотите его прочитать. System.in может использовать сервер как этот поток, и он будет читать с вашей консоли. Ваш вопрос, кажется, указывает, что вы хотите читать из файла. Если вы действительно хотите прочитать из файла, вам нужно создать файл, который вы хотите прочитать, и отправить этот файл в сканер, чтобы позволить сканеру читать из этого файла.

Try:

public class Solution { 
    public static void main(String[] args) { 

     //create the File 
     File file = new File(filename); 

     //send the file into Scanner so it can read from the file 
     Scanner scanner = new Scanner(file); 

     //initialize the counter variable 
     int counter = 1; 

     //read in the file line by line 
     while (scanner.hasNextLine()) { 
      String line = scanner.nextLine(); 
      System.out.println(counter +" "+ line); 
      counter++; 
     } 
    } 
} 
2
Scanner line = new Scanner(); // <-- YOUR ERROR - there is no constructor for the Scanner object that takes 0 arguments. 
// You need to specify the environment in which you wish to 'scan'. Is it the IDE? A file? You need to specify that. 

Поскольку вы сказали EOF, я предполагаю, что есть файл, связанный с этой задачей.

Создайте объект File, переместите его в конструктор сканера.

File readFile = new File(PATH_TO_FILE); // where PATH_TO_FILE is the String path to the location of the file 
// Set Scanner to readFile 
Scanner scanner = new Scanner(readFile); 

Вы также дубликата локальную переменную с именем: линии

Я предлагаю вам сделать больше читать, чтобы получить представление о том, как переменные и объекты работают, а не догадываться или быть spoonfed код вы не понимаете. Вот как вы становитесь сильным программистом.

Смежные вопросы