Hi, If you look trough my code you can see that i have tried to print out some values (the mean value) with a scanner from a csv file with the help of an enhanced for loop (the absolut last loop) and it gives me NaN (not a number).
And i cannot figure out why as i get the values from the file through the loop and everyone says my code looks right. Can anyone help? Did we perhaps miss something?
package apelsinenn;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.Scanner;
/**
*
* @author Patricia
*/
public class Apelsinenn implements Serializable {
//instance variabler
String fileName;
ArrayList<Double> weight;
//Konstruktor
//När man skapar ett objekt med NEW så kallas denna konstruktor.
public Apelsinenn(){
fileName = "orange";
weight = new ArrayList();
}
//Main metoden som gör alla anrop
public static void main(String[] args) throws IOException {
Apelsinenn apelsin = new Apelsinenn();
apelsin.readFile(); apelsin.printObject();
apelsin.readObject();
}
//metod för att läsa in filen måste ändra sökvägarna
public void readFile(){
Scanner input;
try {
input = new Scanner(new FileInputStream ("C:\\javamapp\\orange.csv"));
while(input.hasNextDouble()) {
double vikt = input.nextDouble();
weight.add(vikt);
}
//countAverage(weight);
}catch (FileNotFoundException e) {
//System.out.println(e);
for (int i = 0; i < weight.size(); i++) {
System.out.println( weight.get(i).toString());
}
System.out.println("Någonting gick fel, det gick inte att Läsa från filen");
}
System.out.println("Filen har läst in till ArrayList weigth");
}
/*
En metod för att skapa ett Apelsin Objekt ock skriva det till fil.
*/
public void printObject(){
//Apelsinenn apelsin = new Apelsinenn();
try {
ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream("C:\\javamapp\\orangeWeights.ser"));
output.writeObject(this);
output.close();
} catch (IOException ex) {
System.out.println("Något gick fel med att skriva objektet till filen");
}
System.out.println("Objektet har skrivits i orangeWeights.ser");
}
/*
Metod för att Deserializable objektet och läsa det från filen som vi skapa i printOject metoden
*/
public void readObject(){
try {
ObjectInputStream input = new ObjectInputStream(new FileInputStream("C:\\javamapp\\orangeWeights.ser"));
Apelsinenn nyapelsin = (Apelsinenn)input.readObject();
nyapelsin.printValue();
//System.out.println(nyapelsin.toString()); //skriver ut objektadressen i minnet
} catch (IOException ex) {
System.out.println("Fel vid försök att läsa från filen");
} catch (ClassNotFoundException ex) {
Logger.getLogger(Apelsinenn.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void printValue(){
for (Object weight1 : weight) { //kör en enhanced for loop passande för just arrayer
System.out.println(weight1);
}
System.out.println(this.fileName);
double sum =0;
double count = 0 ;
for(Double wg: weight){
sum += wg;
count++;
}
System.out.println("Medelvärdet är " + sum / count);
}
}