2016-12-10 7 views
-1

Ich nehme eine Intro-Level-Klasse auf Java und habe in ein kleines Problem geraten. Ich lese aus einer Datei mit einer zufälligen Anzahl von ganzen Zahlen (zB 2 24 31 4 5 6 7 8 9 11 15) und ich muss diese ganzen Zahlen in ein Array eingeben.Lesen von einer Datei-Arrays

Zuordnung 1) Schreiben Sie ein Programm, das für den Benutzer zur Eingabe eines Dateinamen einer Textdatei fragen, die eine unbekannte Anzahl von ganzen Zahlen enthält. Und auch ein Ausgabedateiname zur Anzeige der Ergebnisse. Sie werden alle Ganzzahlen aus der Eingabedatei lesen und sie in einem Array speichern. (Möglicherweise müssen Sie alle Werte in der Datei einmal lesen, um die Gesamtzahl zu ermitteln.) Mit diesem Array finden Sie die maximale Anzahl, die minimale Anzahl, den Durchschnittswert und die Standardabweichung. Diese Ergebnisse werden sowohl auf dem Bildschirm als auch in der Ausgabedatei angezeigt, die der Benutzer auswählt. Ausgabe auf Bildschirm und Datei könnte wie folgt aussehen:

Read from file: 12 values 
     Maximum value = 20 
    Minimum value = 3 
    Average value = 13.34 
    Standard Deviation = 2.15 

Sie können eine einfache Editor-Datei erstellen eine Reihe von ganzen Zahlen zu speichern, nur um sicher machen, dass es zumindest ein Raum oder eine Linie zwischen jeder Nummer.

Problem: Wenn ich nicht weiß, wie viele Variablen in der Datei sind, woher weiß ich, auf welche Variable das Array zu initialisieren? Ich dachte darüber nach, die Array-Initialisierung unter die for-Schleife zu stellen..aber dann hätte ich das Array nicht initialisiert.

Mein Code ist unten:

import java.io.*; 
import java.util.*; 
class lab13 
{ 
public static void main(String args[]) throws IOException 
    { 

    Scanner keyboard= new Scanner (System.in); 

    File text = new File("readme.txt"); //creating file readme.txt 
    Scanner fromfile = new Scanner(text); //reading from File txt 

    int counter=0; 

     int [] array = new int[10]; 
     for(int i=0;i<array.length;i++) 
     {    
     array[i] = fromfile.nextInt(); //storing integers into array 

     System.out.println(" "+array[i]); //print out numbers in file 
     counter++; 
     } 

    System.out.println(""); 
    System.out.println("Read from file:"+counter+" values");   
} 

EDIT: Die Antwort auf mein Problem 2 Arrays haben war, las man die Datei, um die Anzahl von Variablen zu zählen, und das andere Array zu speichern die Variablen.

Ich bin mir nicht sicher, warum dies als "Duplicate" markiert wurde, da die andere Frage ja aus einer Datei liest. Es ist jedoch völlig anders. Man diese Gemeinschaft ist hart. lol.

+0

Da die Größe des Arrays dynamisch wäre, wäre ArrayList die bessere Lösung. –

+1

Hinweis: Sie sind nicht auf ein einzelnes Array beschränkt. Sie müssen die Größe des Arrays ändern, während Sie die ganzen Zahlen lesen. –

+0

Ohne zu wissen, wie viele Daten in der Datei gespeichert sind, kann nicht festgestellt werden, wie groß das Array sein sollte. Sie müssten weiterhin Daten zu einer 'Liste' hinzufügen und sie dann in ein Array konvertieren, aber ich bin mir nicht sicher, ob das akzeptabel wäre. Ihre beste Option: Fragen Sie Ihren Lehrer –

Antwort

-1

Wenn die Zuweisung ein Array streng verwenden soll, können Sie eine Schleife verwenden, um die Anzahl der Einträge zu zählen.

int num = 0; 
while (text.hasNext()) 
     num++; 

Dies zählt die Anzahl Integer in der Datei. Dann initialisieren Sie das Array mit der Variablennummer

+0

Wenn ich versuche und die "method.hasNext()" Ich bekomme die folgende Fehlermeldung. lab13.java:14: Fehler: Methode hasNext() Lage: nicht Symbol while (text.hasNext()) ^ Symbol finden variablen Text vom Typ Datei 1 Fehler Nicht sicher, wie schreibt man einen Bedingung, die jedes int in der Datei überprüft. –

+0

Sorry, ich vermasselt. Ersetzen Sie text.hasNext() durch fromFile.hasNext(). .hasNext() ist eine Scanner-Methode, nicht Datei – sbowde4

-1

Sie können eine ArrayList verwenden. Eine ArrayList ist ein Objekt, das ein Array umschließt und die Neuzuweisung eines neuen Arrays beim Hinzufügen von Elementen übernimmt.

+0

Ich habe nie ArrayList verwendet ... wenn ich Beispiele ansehe..es scheint alles wie Worte zu sein, die ich noch nie gelernt oder benutzt habe. –