2017-09-23 3 views
0

Ich versuchte Eingabe zu speichern, wieScanning Eingabe in char-Array Java

5 
3DRP 3QEW 
8AQW 9ADA 

ich, dass die Eingabe in als Kopie Paste lesen möchten und es ausdrückte. Ich habe dies versucht:

public static void main(String[] args) { 

    Scanner scan = new Scanner(System.in); 
    String userNumber; 
    userNumber = scan.nextLine(); 
    String[] tokens = userNumber.split("[ ]"); 
    System.out.println(tokens[1]); 
    for(int i = 0; i < tokens.length;i++) { 
     System.out.println(tokens[i]); 
    } 
    scan.close(); 
} 

Mein Ziel zu lesen ist, im Grunde genommen, dass die Eingabe in als eine Kopie einfügen in die IDE oder über eine TXT-Datei und speichern Sie dann jedes einzelne Zeichen außer Leerzeichen in ein char-Array, das ist 1d oder 2d.

+2

und welches Problem konfrontiert sind Sie? abgesehen von 'split (" [] "); scheint für Ihre Eingabe nicht erforderlich zu sein. – nullpointer

+0

Abgesehen davon: Verwenden Sie nicht scanner.close(), da dadurch der System.in-Stream geschlossen wird. –

+0

@nullpointer Ich möchte die gesamte Zeile des Codes lesen, aber es liest nur die erste Zeile, wenn ich es einfügen kopieren. Ich möchte nur die tatsächlichen ASCII nicht die weißen Leerzeichen lesen, in diesem Fall sind die weißen Leerzeichen enthalten – Peerless

Antwort

1

Von dem, was ich verstehe, möchten Sie 3 Zeilen von der Konsole lesen, entfernen Sie alle Leerzeichen aus diesem Text und speichern Sie es als char Array.

Wenn das der Fall ist, ist hier, wie Sie das tun könnte:

int numberOfLinesToRead = 3; 
    try(Scanner sc = new Scanner(System.in)){ 
     StringBuilder buff = new StringBuilder(); 
     while(numberOfLinesToRead-- > 0){ 
      String line = sc.nextLine(); 
      String noSpaces = line.replaceAll("\\s", ""); 
      buff.append(noSpaces); 
     } 
     char[] characters = buff.toString().toCharArray(); 
     System.out.println(Arrays.toString(characters)); 
    }catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

einen bestimmten Grund, die "versuchen mit Ressourcen" anders als den Strom automatisch zu schließen? Scheint ein bisschen Overkill für mich, da Scanner keine geprüften Ausnahmen wirft –

+1

@ChandlerBing Nur eine Angewohnheit, ist praktisch, wenn Sie den Stream ändern. Es sind keine Änderungen erforderlich, wenn ich 'System.in' in einen' FileInputStream' ändere. – Titus

+0

@Titus Was passiert, wenn ich die Anzahl der Zeilen, die ich lesen möchte, nicht weiß? – Peerless