Java: Scanner-Datei in Arraylist, dann min/max/Mittelwert/standarddeviation
Die Zuordnung erstellen Sie ein Programm zum Lesen von der Standardeingabe (eine Datei mit einer Liste von Integer-zahlen) in ein array, und dann finden Sie den Mittelwert, max, min, median und die Standardabweichung von diesen zahlen. first things first, hier der code:
import java.io.*;
import java.util.*;
public class DescriptiveStats
{
protected List<Integer> scores = new ArrayList<Integer>();
public DescriptiveStats()
{
//default constructor
}
public void main(String[] args) throws IOException
{
try{
Scanner sc = new Scanner(new FileReader("students.txt"));
while(sc.hasNextInt())
{
scores.add(sc.nextInt());
}
sc.close();
}
catch(Exception e)
{
e.printStackTrace();
}
DescriptiveStats stat = new DescriptiveStats();
System.out.println("Min = " + stat.getMin(scores[]));
System.out.println("Max = " + stat.getMax(scores[]));
System.out.println("Median = " + stat.getMedian(scores[]));
System.out.println("Mean = " + stat.getMean(scores[]));
int Mean = stat.getMean(scores[]);
System.out.println("Standard Deviation = " + stat.getStandardDev(scores[], Mean));
}
public int getMin(int []lst)
{
int min = lst[0];
for(int i=0;i<lst.length;i++)
{
if(min>lst[i])
min=lst[i];
}
return min;
}
public int getMax(int []lst)
{
int max = lst[0];
for(int i=0;i<lst.length;i++)
{
if(max<lst[i])
max=lst[i];
}
return max;
}
public int getMedian(int [] lst)
{
Arrays.sort(lst);
int middle = lst.length/2;
if(lst.length%2==1)
{
return lst[middle];
}
return (lst[middle-1] + lst[middle]);
}
public int getMean(int [] lst)
{
Arrays.sort(lst);
int mean = 0;
int sum = 0;
int count = 0;
for(int i=0;i>lst.length;i++)
{
sum = sum + lst[i];
count++;
}
mean = sum/count;
return mean;
}
public int getStandardDev(int [] lst, int m)
{
int mean = m;
int [] array = lst;
int total = 0;
for(int i =0; i < array.length; i++)
{
int result = array[i]-mean;
int [] all = Math.pow(result, 2);
}
total = result/array.length;
int standev = Math.sqrt(total);
return standev;
}
}
Meine speziellen Fragen, kommen bis zu dieser: ich weiß nicht, ob ich das Lesen in der Datei korrekt. Ich hab folgten viele Anleitungen aus Büchern zu website und das scheint die richtige Formel für die scanner, aber die Datei nicht gefunden wird. Ich habe versucht, drei verschiedene IDE (BlueJ, Eclipse, Netbeans) ohne Erfolg.
Zweitens, ich habe die Methoden, um eine arraylist als Eingang und rief Ihnen in einem " public void main(string[] args)' - Methode. Ich bin mir ziemlich sicher, ich kann dies tun, aber es wird nicht kompiliert, und ich nicht sicher bin, was ich bin fehlt.
Schließlich will ich sicherstellen, dass mein Standardabweichung Methode korrekt ist.
Ich erwarte nicht, dass eine einzelne person zu lösen, aber diese sind die Punkte, an denen ich stecken geblieben bin, und jede Hilfe würde geschätzt werden. Danke!
- Wenn die Datei nicht im Arbeitsverzeichnis, die Sie brauchen, um einen Pfad zu es. Auch main() sollte statisch sein.
- Die main-Methode muss static: public static void main(String[] args).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das erste, was zu tun ist, um Ihr Programm zu kompilieren und auszuführen (korrekt oder nicht). Dann können Sie drucken Sie einfach die Werte, die Sie liest und testen Sie, ob Sie identisch sind die Werte in der Daten-Datei.
Um Ihr Programm auszuführen, müssen Sie zuerst deklariert die main () - Methode, um sein
static
. Auch, weil Sie fangen die IOException (gute Idee übrigens!), Sie brauchen nicht zu erklärenmain
zu werfen die Ausnahme. Schließlich, da Sie versuchen, die Daten zu Lesen im innerenmain
Sie können nicht auf dasscores
Feld, da es eine Instanz-variable und Sie nicht über eine Instanz vonDescriptiveStats
noch. Außerdem, da du dich übergeben Sie das array als parameter an die Analyse-Funktionen, die nicht benötigt werden, um eine Instanz-variable. Versuchen Sie dies:Wenn Ihr wissen wollt, von wo das Programm versucht, die Datei zu Lesen, verwenden Sie diese:
Tun, wo Sie platziert die Datei "Studenten'txt". Wenn es nicht in der gleichen Lage wie die Klasse "DescriptiveStats", JVM nicht in der Lage, um die Datei zu suchen. Also, stellen Sie sicher, dass die Datei im gleichen Pfad wie die Klasse oder geben Sie den richtigen Pfad, wenn Sie wollen, um es von irgendwo anders.
Kommen zum zweiten Punkt. Sie können absolut rufen Sie diese Methoden in der main () - Funktion. Was ist die compiler-Fehler sind Sie immer?
Ihre Bemühungen zu schätzen wissen ausprobieren, mit verschiedenen IDEs. Aber es hat nichts zu tun mit der IDE.
Okay, also ich habe ein paar änderungen in übereinstimmung mit dem, was die Leute vorschlagen. Ich habe den hard codierten Datei und ersetzt es mit der standard-Eingabe. Nun, meine eigentliche Schwerpunkt ist:
-Sicherstellen, dass ich mit array-Listen in Verbindung mit den Methoden richtig
-Sicherstellen, dass ich bin richtig anwenden können diejenigen, Standardabweichung
Hier ist mein neuer code:
Wie Sie sehen können, die standard-Abweichung-Methode und die Referenz in der main-Methode in die Kommentare. Ich habe nicht versucht, konvertieren diese array-Listen noch nicht, da bin ich mir nicht sicher, ob ich das richtige getan haben, zu den anderen.
Schließlich, Wenn ich ausführen, was ich habe, ist der compiler keine Fehlermeldungen aus. Stattdessen hängt Es sich einfach auf, wahrscheinlich mit abgestürzt. Ich bin mir nicht sicher, warum. Wenn ich den 'void main(String[] args' - option in BlueJ, reiche ich die Namen der text-Datei(Die ist in das Projekt-Verzeichnis. es gibt sogar eine in das Haupt-Verzeichnis nur für den Fall, dass was ist seiend verwiesen.
Danke an Euch alle.