2016-05-14 9 views
0

Ich bin neu in Java und versuche, einen QuickUnion-Algorithmus auszuführen. Ich habe diese Textdateien auf meinem Desktop und möchte programmieren, um die ganzen Zahlen in ihnen zu lesen. Dies ist das Ende der QuickUnion-Klasse.Wie funktioniert StdIn/Out in Java?

public static void main(String[] args) { 

    int N = StdIn.readInt(); // Read number of sites 
    QuickUnionUF quickunion = new QuickUnionUF(N); 
    while (!StdIn.isEmpty()) { 
     int p = StdIn.readInt(); 
     int q = StdIn.readInt();      // Read pair to connect 
     if (quickunion.connected(p, q)) continue;  // Ignore if connected 
     quickunion.union(p, q);      // Combine components 
     StdOut.println(p + " " + q);     // and print connection 
    } 
    StdOut.println(quickunion.count() + " components"); 
} 

Meine Frage ist: Wie funktioniert StdIn? Wie lese ich die Textdatei? Die erste Testdatei enthält zwei Spalten mit Zahlen.

+0

Lesen Sie aus Dateien oder von der Eingabe des Benutzers in das Konsolenfenster? –

+0

Im Lesen von Dateien – Augusti

+0

StdIn.readInt() scheint Ganzzahlen zu lesen. Allerdings sehe ich nicht, wie es irgendwas lesen würde. "N" bleibt leer. – Augusti

Antwort

-1

Lese folgende answer

Scanner s = new Scanner(System.in); 
System.out.println(s.nextInt()); 
-1

auf diese Weise versuchen, ... stellen Sie sicher, in dem Code, den Sie auf dem richtigen Weg geben, wo Sie Ihren Text-Dateien sind ...

import java.util.Scanner; 
import java.io.File; 
class Input{ 

    public static void main(String[] args)throws Exception{ 
     File inputFile = new File("F:\\coding\\t.txt"); 
     Scanner ob = new Scanner(inputFile); 

     while(ob.hasNextInt()) 
    { 
      int n = ob.nextInt(); 
      System.out.println(n); 
     } 
     ob.close(); 
    } 

} 
+0

Dieser Code, den Sie geschrieben haben, lässt mich die Ganzzahlen extrahieren und druckt die zwei Spalten als eine Spalte. – Augusti

0

Standardbibliothek (Std) wird oft für Studenten angeboten, die ihren ersten Programmierkurs in Java belegen. Die Std-Bibliothek ist nicht Teil von "Installierte Java-Bibliotheken". Um sie zu verwenden, müssen Sie die Std-Bibliothek herunterladen und in Ihrem Pfad deklarieren. Es funktioniert identisch mit der Java-Scanner-Klasse. Betrachten

public static void main(String[] args) { 
     StdOut.print("Type an int: "); 
     int a = StdIn.readInt(); 
     StdOut.println("Your int was: " + a); 
     StdOut.println(); 
    } 
} 

Welche in nur einer ganzen Zahl nimmt, a und druckt es aus. Wie auch immer, wie Sie sehen, verwenden Sie isEmpty(), die wahr zurückgibt, wenn Standardeingabe leer ist (außer möglicherweise für Leerzeichen). Daher können Sie die isEmpty() verwenden, um so viele Eingaben wie Sie möchten aufzunehmen. Hier ist ein Beispiel-Code für diese Verwendung

public static void main(String[] args) { 
     double sum = 0.0; // cumulative total 
     int n = 0; // number of values 
     while (!StdIn.isEmpty()) { 
      double x = StdIn.readDouble(); 
      sum = sum + x; 
      n++; 
     } 
     StdOut.println(sum/n); 
} 

die sofort den Durchschnitt Ihrer Eingaben berechnet und druckt es aus, wie Sie in neue Eingabe eingeben.

+0

Ok, jetzt denke ich, ich habe es. Vielen Dank und Danke an die anderen, die auf die Scanner-Klasse hingewiesen haben. Am wenigsten kann ich damit experimentieren. – Augusti