2012-06-01 5 views
0

Я хочу, чтобы прочитать эту строку (из консоли не файл), например:Чтение строки с новой строки из консоли Java

one two three 
four five six 
seven eight nine 

Так что я хочу, чтобы прочитать его в каждой строке и положить каждую строку в массиве. Как я могу это прочитать? Потому что, если я использую сканер, я могу читать только одну строку или одно слово (следующий или следующий).

, что я имею в виду, чтобы прочитать, например: one two trhee \n four five six \n seven eight nine...

+0

Используйте 'BufferedReader' –

ответ

7

Вы должны сделать сами! Существует similer пример:

public class ReadString { 

    public static void main (String[] args) { 

     // prompt the user to enter their name 
     System.out.print("Enter your name: "); 

     // open up standard input 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

     String userName = null; 

     // read the username from the command-line; need to use try/catch with the 
     // readLine() method 
     try { 
     userName = br.readLine(); 
     } catch (IOException ioe) { 
     System.out.println("IO error trying to read your name!"); 
     System.exit(1); 
     } 

     System.out.println("Thanks for the name, " + userName); 

    } 

} // end of ReadString class 
+0

+ 1..i был слишком ленив, чтобы ввести его. –

+1

Но я не могу читать новые строки с этим – user1253201

+0

, который может читать только одну строку, что я имею в виду, если читать: один два три \ n четыре пять шесть \ n семь восемь девять – user1253201

2

Чтобы ответить на вопрос, как топленое в комментарии к первому ответу:

Вы должны вызывать nextLine Сканера() метод один раз для каждой строки, который вы хотите прочитать. Это может быть выполнено с помощью цикла. Проблема, с которой вы неизбежно столкнетесь, - «Как я могу узнать, какой массив результатов должен быть?» Ответ заключается в том, что вы не можете знать, не указали ли вы его в самом входе. Вы можете изменить свою программу ввод спецификации требует количества строк читать следующий образом:

3 
One Two Three 
Four Five 
Six Seven Eight 

И тогда вы можете прочитать вход с этим:

Scanner s = new Scanner(System.in); 
int numberOfLinesToRead = new Integer(s.nextLine()); 
String[] result = new String[numberOfLinesToRead]; 
String line = ""; 
for(int i = 0; i < numberOfLinesToRead; i++) { // this loop will be run 3 times, as specified in the first line of input 
    result[i] = s.nextLine(); // each line of the input will be placed into the array. 
} 

В качестве альтернативы вы можете использовать более продвинутые данные структура называется ArrayList. ArrayList не имеет заданной длины при его создании; вы можете просто добавить к нему информацию по мере необходимости, делая ее идеальной для чтения ввода, когда вы не знаете, сколько ввода нужно прочитать. Например, если бы мы использовали свой оригинальный пример ввода:

one two trhee 
four five six 
seven eight nine 

Вы можете прочитать вход со следующим кодом:

Scanner s = new Scanner(System.in); 
ArrayList<String> result = new ArrayList<String>(); 
String line = ""; 
while((line = s.nextLine()) != null) { 
    result.add(line); 
} 

Таким образом, вместо того, чтобы создать массив фиксированной длины, мы можем просто .add() каждую строку в ArrayList, когда мы сталкиваемся с ней во входном файле. Я рекомендую вам больше узнать о ArrayLists, прежде чем пытаться их использовать.

tl; dr: Вы вызываете следующую() или следующую строку() для каждой строки, которую вы хотите прочитать, используя цикл.

Более подробную информацию о циклах: Java Loops

-1

Посмотрите на этот код:

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

public class SearchInputText { 

    public static void main(String[] args) { 
    SearchInputText sit = new SearchInputText(); 
    try { 
     System.out.println("test"); 
     sit.searchFromRecord("input.txt"); 
     System.out.println("test2"); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

private void searchFromRecord(String recordName) throws IOException { 
    File file = new File(recordName); 
    Scanner scanner = new Scanner(file); 
    StringBuilder textFromFile = new StringBuilder(); 
    while (scanner.hasNext()) { 
     textFromFile.append(scanner.next()); 
    } 
    scanner.close(); 

    // read input from console, compare the strings and print the result 
    String word = ""; 
    Scanner scanner2 = new Scanner(System.in); 
    while (((word = scanner2.nextLine()) != null) 
      && !word.equalsIgnoreCase("quit")) { 
     if (textFromFile.toString().contains(word)) { 
      System.out.println("The word is on the text file"); 
     } else { 
      System.out.println("The word " + word 
        + " is not on the text file"); 
     } 
    } 
    scanner2.close(); 

} 

} 
+0

Вопрос заключается в чтении строки с консоли. – thanga

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