Auswertung von Fragebogen funktioniert nicht!

JG12111989

Mitglied
Hallo zusammen,

ich habe eine Konsolenanwendung geschrieben, die Probanden Fragen stellt und diese Ergebnisse später auswertet. Allerdings funktionieren zwei Punkte in der Methode zur Auswertung nicht:

- Bei der Überprüfung der Korrektheit bekomme ich IMMER 0% angegeben, auch wenn das richtige Ergebnisse gewählt wurde
- Beim Minimum der Zeitdauer steht IMMER 0ms...

Hier ist mein Code:
Java:
package lernsituation_4;
import java.io.*;

class PsyUntersuchung {
 
  private int [][] ergeb= new int[100][5];
  private long [][]zeit=new long[100][5];
 
  public void menueWaehlen() throws IOException
  {
  int eingabeZahl;
 
  BufferedReader lesen = new BufferedReader(new InputStreamReader(System.in));
  System.out.println("Psychologisches Institut II");
  System.out.println("Teiluntersuchung: 5 Fragen");
  System.out.println("<1> Neuen Versuch starten");
  System.out.println("<2> Auswertung der Versuche");
  System.out.println("<3> Ende");
  System.out.println("Ihre Wahl: ?");
  eingabeZahl = Integer.parseInt(lesen.readLine());
 
  switch (eingabeZahl)
  {
  case 1: fragenStellen();break;
  case 2: bogenAuswerten();break;
  case 3: System.out.println("Dies ist das Ende des Programms. Vielen Dank!");break;
  }
  }
 
  public void fragenStellen() throws IOException
  {
  int prob, antw;
  System.out.println("Bitte Nummer eingeben: ");
  BufferedReader lesen = new BufferedReader(new InputStreamReader(System.in));
  prob= Integer.parseInt(lesen.readLine());
  System.out.println("Programm starten.... Zum Start beliebige Taste druecken!");
  String weiter = lesen.readLine();
  System.out.println();System.out.println();
  long startZeit=System.currentTimeMillis();
  System.out.println("FRAGE 1: Thomas Mann schrieb welchen Roman?");
  System.out.println("ANTWORT 1: Die Pest");
  System.out.println("ANTWORT 2: Der Zauberberg"); //r
  System.out.println("ANTWORT 3: Der Untertan");
  System.out.println("Ihre Wahl: ?");
  antw= Integer.parseInt(lesen.readLine());
  if(antw==1||antw==2||antw==3)
  {
  ergeb[prob-1][0]=antw;
  }
  else {
  System.out.println("Eingabe ist ungueltig! Bitte kontaktieren Sie den Versuchsleiter...");
  weiter = lesen.readLine();
  menueWaehlen();
  }
  long endZeit=System.currentTimeMillis();
  zeit[prob-1][0]=endZeit-startZeit;
  System.out.println();System.out.println();
  startZeit=System.currentTimeMillis();
  System.out.println("FRAGE 2: Napoleon wurde endgueltig besiegt in der Schlacht von?");
  System.out.println("ANTWORT 1: Waterloo"); //r
  System.out.println("ANTWORT 2: Marengo");
  System.out.println("ANTWORT 3: Austerlitz");
  System.out.println("Ihre Wahl: ?");
  antw= Integer.parseInt(lesen.readLine());
  if(antw==1||antw==2||antw==3)
  {
  ergeb[prob-1][1]=antw;
  }
  else {
  System.out.println("Eingabe ist ungueltig! Bitte kontaktieren Sie den Versuchsleiter...");
  weiter = lesen.readLine();
  menueWaehlen();
  }
  endZeit=System.currentTimeMillis();
  zeit[prob-1][1]=endZeit-startZeit;
  System.out.println();System.out.println();
  startZeit=System.currentTimeMillis();
  System.out.println("FRAGE 3: Der Schall pflanzt sich in der Luft mit welcher Geschwindigkeit fort?");
  System.out.println("ANTWORT 1: 33 km/h");
  System.out.println("ANTWORT 2: 330 m/s"); //r
  System.out.println("ANTWORT 3: 3300 m/s");
  System.out.println("Ihre Wahl: ?");
  antw= Integer.parseInt(lesen.readLine());
  if(antw==1||antw==2||antw==3)
  {
  ergeb[prob-1][2]=antw;
  }
  else {
  System.out.println("Eingabe ist ungueltig! Bitte kontaktieren Sie den Versuchsleiter...");
  weiter = lesen.readLine();
  menueWaehlen();
  }
  endZeit=System.currentTimeMillis();
  zeit[prob-1][2]=endZeit-startZeit;
  System.out.println();System.out.println();
  startZeit=System.currentTimeMillis();
  System.out.println("FRAGE 4: Welche Erfindung machte Thomas Alva Edison nicht?");
  System.out.println("ANTWORT 1: Die Gluehlampe");
  System.out.println("ANTWORT 2: Den Phonograph");
  System.out.println("ANTWORT 3: Die Enigma"); //r
  System.out.println("Ihre Wahl: ?");
  antw= Integer.parseInt(lesen.readLine());
  if(antw==1||antw==2||antw==3)
  {
  ergeb[prob-1][3]=antw;
  }
  else {
  System.out.println("Eingabe ist ungueltig! Bitte kontaktieren Sie den Versuchsleiter...");
  weiter = lesen.readLine();
  menueWaehlen();
  }
  endZeit=System.currentTimeMillis();
  zeit[prob-1][3]=endZeit-startZeit;
  System.out.println();System.out.println();
  startZeit=System.currentTimeMillis();
  System.out.println("FRAGE 5: Welcher Architekt nannte sich Le Corbusier?");
  System.out.println("ANTWORT 1: Charles-Édouard Jeanneret-Gris"); //r
  System.out.println("ANTWORT 2: Frank Wright");
  System.out.println("ANTWORT 3: Mies van der Rohe");
  System.out.println("Ihre Wahl: ?");
  antw= Integer.parseInt(lesen.readLine());
  if(antw==1||antw==2||antw==3)
  {
  ergeb[prob-1][4]=antw;
  }
  else {
  System.out.println("Eingabe ist ungueltig! Bitte kontaktieren Sie den Versuchsleiter...");
  weiter = lesen.readLine();
  menueWaehlen();
  }
  endZeit=System.currentTimeMillis();
  zeit[prob-1][4]=endZeit-startZeit;
  System.out.println();System.out.println();
  System.out.println("Dies ist das Ende des Fragebogens! Vielen Dank fuer Ihre Teilnahme!");
  System.out.println("Um fortzfahren bitte beliebige Taste druecken...");
  weiter = lesen.readLine();
  menueWaehlen();
  }
 
  public void bogenAuswerten() throws IOException
  {
  System.out.println("AUSWERTUNG DER ERGEBNISSE");
  int temp=0;
  for(int i=0; i<ergeb.length; i++)
  {
  if(ergeb[i][0]==2)
  {
  temp++;
  }
  }
  int proz=temp/ergeb.length*100;
  System.out.println("Prozentualer Anteil der korrekten Antworten zu Frage 1: "+proz+" %");
 
  temp=0;
  for(int i=0; i<ergeb.length; i++)
  {
  if(ergeb[i][1]==1)
  {
  temp++;
  }
  }
  proz=temp/ergeb.length*100;
  System.out.println("Prozentualer Anteil der korrekten Antworten zu Frage 2: "+proz+" %");
 
  temp=0;
  for(int i=0; i<ergeb.length; i++)
  {
  if(ergeb[i][2]==2)
  {
  temp++;
  }
  }
  proz=temp/ergeb.length*100;
  System.out.println("Prozentualer Anteil der korrekten Antworten zu Frage 3: "+proz+" %");
 
  temp=0;
  for(int i=0; i<ergeb.length; i++)
  {
  if(ergeb[i][3]==3)
  {
  temp++;
  }
  }
  proz=temp/ergeb.length*100;
  System.out.println("Prozentualer Anteil der korrekten Antworten zu Frage 4: "+proz+" %");
 
  temp=0;
  for(int i=0; i<ergeb.length; i++)
  {
  if(ergeb[i][4]==1)
  {
  temp++;
  }
  }
  proz=temp/ergeb.length*100;
  System.out.println("Prozentualer Anteil der korrekten Antworten zu Frage 5: "+proz+" %");
  System.out.println();System.out.println();
 
  long max=0;
  for(int i=0; i<zeit.length; i++)
  {
  if(zeit[i][0]>max)
  {
  max=zeit[i][0];
  }
  }
  System.out.println("Maximale Dauer der Beantwortung von Frage 1: "+max+" ms");
 
  max=0;
  for(int i=0; i<zeit.length; i++)
  {
  if(zeit[i][1]>max)
  {
  max=zeit[i][1];
  }
  }
  System.out.println("Maximale Dauer der Beantwortung von Frage 2: "+max+" ms");
 
  max=0;
  for(int i=0; i<zeit.length; i++)
  {
  if(zeit[i][2]>max)
  {
  max=zeit[i][2];
  }
  }
  System.out.println("Maximale Dauer der Beantwortung von Frage 3: "+max+" ms");
 
  max=0;
  for(int i=0; i<zeit.length; i++)
  {
  if(zeit[i][3]>max)
  {
  max=zeit[i][3];
  }
  }
  System.out.println("Maximale Dauer der Beantwortung von Frage 4: "+max+" ms");
 
  max=0;
  for(int i=0; i<ergeb.length; i++)
  {
  if(ergeb[i][4]>max)
  {
  max=ergeb[i][4];
  }
  }
  System.out.println("Maximale Dauer der Beantwortung von Frage 5: "+max+" ms");
  System.out.println();System.out.println();
 
  long min=max;
  for(int i=0; i<zeit.length; i++)
  {
  if(zeit[i][0]<min)
  {
  min=zeit[i][0];
  }
  }
  System.out.println("Geringste Dauer der Beantwortung von Frage 1: "+min+" ms");
 
  min=max;
  for(int i=0; i<zeit.length; i++)
  {
  if(zeit[i][1]<min)
  {
  min=zeit[i][1];
  }
  }
  System.out.println("Geringste Dauer der Beantwortung von Frage 2: "+min+" ms");
 
  min=max;
  for(int i=0; i<zeit.length; i++)
  {
  if(zeit[i][2]<min)
  {
  min=zeit[i][2];
  }
  }
  System.out.println("Geringste Dauer der Beantwortung von Frage 3: "+min+" ms");
 
  min=max;
  for(int i=0; i<zeit.length; i++)
  {
  if(zeit[i][3]<min)
  {
  min=zeit[i][3];
  }
  }
  System.out.println("Geringste Dauer der Beantwortung von Frage 4: "+min+" ms");
 
  min=max;
  for(int i=0; i<zeit.length; i++)
  {
  if(zeit[i][4]<min)
  {
  min=zeit[i][4];
  }
  }
  System.out.println("Geringste Dauer der Beantwortung von Frage 5: "+min+" ms");
  System.out.println();System.out.println();
 
  long addition=0;int i=0;
  for(; i<zeit.length; i++)
  {
  addition=addition+zeit[i][0];
  }
  long durchs=addition/i;
  System.out.println("Durchschnittliche Dauer der Beantwortung von Frage 1: "+durchs+" ms");
 
  addition=0; i=0;
  for(; i<zeit.length; i++)
  {
  addition=addition+zeit[i][1];
  }
  durchs=addition/i;
  System.out.println("Durchschnittliche Dauer der Beantwortung von Frage 2: "+durchs+" ms");
 
  addition=0; i=0;
  for(; i<zeit.length; i++)
  {
  addition=addition+zeit[i][2];
  }
  durchs=addition/i;
  System.out.println("Durchschnittliche Dauer der Beantwortung von Frage 3: "+durchs+" ms");
 
  addition=0; i=0;
  for(; i<zeit.length; i++)
  {
  addition=addition+zeit[i][3];
  }
  durchs=addition/i;
  System.out.println("Durchschnittliche Dauer der Beantwortung von Frage 4: "+durchs+" ms");
 
  addition=0; i=0;
  for(; i<zeit.length; i++)
  {
  addition=addition+zeit[i][4];
  }
  durchs=addition/i;
  System.out.println("Durchschnittliche Dauer der Beantwortung von Frage 5: "+durchs+" ms");
  System.out.println();System.out.println();
  System.out.println("Dies ist das Ende der Auswertung.");
  System.out.println("Um fortzufahren bitte beliebige Taste druecken...");
  BufferedReader lesen = new BufferedReader(new InputStreamReader(System.in));
  String weiter = lesen.readLine();menueWaehlen();
  }
}


public class Lernsituation_4 {
  public static void main(String[] args) throws IOException {
 
  PsyUntersuchung test=new PsyUntersuchung();
  test.menueWaehlen();
  }
 
}
Danke für jede Hilfe!!
 
Zuletzt bearbeitet von einem Moderator:
- Bei der Überprüfung der Korrektheit bekomme ich IMMER 0% angegeben, auch wenn das richtige Ergebnisse gewählt wurde

Java:
  int temp=0;
  for(int i=0; i<ergeb.length; i++)
  {
  if(ergeb[i][0]==2)
  {
  temp++;
  }
  }
  int proz=temp/ergeb.length*100;
  System.out.println("Prozentualer Anteil der korrekten Antworten zu Frage 1: "+proz+" %");

Du rechnest hier mit Integern (ganzahligen Werten), bei der Division hast du somit als Ergebnis 0. Und 0*100 ist einfach 0.
Du musst hier mit double arbeiten.

Danke für jede Hilfe!!

Schau dir deine Methode "fragenStellen" nochmal an. Bei jeder Frage welche du stellst machst du immer die gleichen Sachen, das könnte man leicht in eine weitere Methode auslagern, damit reduziert sich der Code und die Übersicht erhöht sich 🙂
 
einfach nur irgendwo statt dem einem "int" "double" schreiben reicht nicht

...okay, dann steh ich jetzt auf dem Schlauch.
Code:
int temp=0;
  for(int i=0; i<ergeb.length; i++)
  {
  if(ergeb[i][0]==2)
  {
  temp++;
  }
  }
  double proz=temp/ergeb.length*100;
  System.out.println("Prozentualer Anteil der korrekten Antworten zu Frage 1: "+proz+" %");
Mir wird der Fehler leider nicht ersichtlich....
 

Zurück
Oben