Nabend,
Ich habe ein Problem mit meiner Hand-in Aufgabe.
Das Programm soll max. 10 Kurse und die jeweiligen Zensuren in Arrays speichern.
Der Nutzer kann zwischen Option 1, 2, 3 & 4 auswählen.
1 nimmt den Input entgegen ( Kurs und Zensur ) und speichert dies dann in den Arrays ab
2 stellt alles folgender maßen dar: (Überhaupt mit JOptionPane und Arrays möglich??)
[SPOILER="Klick mich"][CODE]COURSE NAME GRADE
---------------------
MATH 7
PROGRAMMING 10
BIOLOGY 4[/CODE][/SPOILER]
3 soll den Durchschnitt der eingegebenen Zensuren berechnen und darstellen
[SPOILER="Klick mich"][CODE]Total of grades: 21.0
Count of grades: 3.0
Average of grades: 7.0[/CODE][/SPOILER]
und 4 soll ganz einfach das Programm beenden.
Mein Problem gerade ist, dass er den Durchschnitt nicht berechnen will.
Bekomme da nur 'ne NullPointerException
[CODE]Exception in thread "main" java.lang.NullPointerException
at GradesClass.sum(GradesClass.java:70)
at UserInteractionMain.main(UserInteractionMain.java:29)[/CODE]
Hier mein derzeitiger Code (Ja, noch das totale Chaos^^)
Geht als Anfänger aber denke ich noch klar :toll:
Und gerade bin ich nur rein auf die Funktion aus
Wenn jemand den Fehler sieht und vielleicht noch tausend andere Fehler, die ich gemacht habe, wäre das sehr cool ^^
[SPOILER="Main Klasse"]
[code=Java]import javax.swing.JOptionPane;
public class UserInteractionMain
{
public static void main(String[] args)
{
int index = 0;
String optionChoice = optionDialog();
while ( index < GradesClass.MAX_COURSES )
{
if ( optionChoice.equals( "1" ) )
{
GradesClass.courses[index] = GradesClass.courseInput();
GradesClass.grades[index] = GradesClass.gradeInput();
optionChoice = optionDialog();
index++;
}
else if ( optionChoice.equals( "2" ) )
{
// Nicht fertig - Test
JOptionPane.showMessageDialog( null, "Option 2" );
optionChoice = optionDialog();
}
else if ( optionChoice.equals( "3" ) )
{
int sum = GradesClass.sum( GradesClass.grades );
double average = GradesClass.average( GradesClass.grades );
JOptionPane.showMessageDialog( null, "Total of Grades: " + sum
+ "Count of Grades: " + index
+ "Average of Grades: " + average );
optionChoice = optionDialog();
}
else if ( optionChoice.equals( "4" ) )
{
int exit = JOptionPane.showConfirmDialog( null, "Are you sure you want to quit?", "Quit", JOptionPane.YES_NO_CANCEL_OPTION );
if ( exit == JOptionPane.YES_OPTION )
{
JOptionPane.showMessageDialog( null, "Bye!", "EXIT", JOptionPane.INFORMATION_MESSAGE);
return;
} else {
optionChoice = optionDialog();
}
}
} // While end
} // Main end
// Option handling
public static String optionDialog( )
{
String choice = JOptionPane.showInputDialog( null, "1. Enter a course and grade. \n2. Display all grades. \n3. Calculate the average. \n4. Exit" );
choice = optionDialogCheck(choice);
return choice;
}
public static String optionDialogCheck( String options )
{
final String REGEX_OPTIONS = "(^[1-4]$)";
if ( options.isEmpty() ) {
JOptionPane.showMessageDialog( null, "Nothing entered!" );
options = optionDialog();
} else if ( !options.matches( REGEX_OPTIONS ) ) {
JOptionPane.showMessageDialog( null, "Not an option!" );
options = optionDialog();
}
return options;
}
} // Class end[/code][/SPOILER]
[SPOILER="Methoden Klasse"]
[code=Java]import javax.swing.JOptionPane;
public class GradesClass
{
public static final int MAX_COURSES = 10;
public static String[] courses = new String[MAX_COURSES];
public static String[] grades = new String[MAX_COURSES];
// --------------------------- COURSE INPUT ----------------------------- \\
public static String courseInput( )
{
String course = JOptionPane.showInputDialog( "Please enter the Course : " );
course = courseInputCheck(course);
return course;
}
public static String courseInputCheck( String courseInput )
{
if ( courseInput.isEmpty() ) {
JOptionPane.showMessageDialog( null, "Nothing entered!" );
courseInput = courseInput();
}
return courseInput;
}
// --------------------------- GRADE INPUT ----------------------------- \\
public static String gradeInput( )
{
String grade = JOptionPane.showInputDialog( "Please enter your Grade : " );
grade = gradeInputCheck(grade);
return grade;
}
public static String gradeInputCheck( String gradeInput )
{
final String REGEX_POSSIBLE_GRADES = "[-3 0 2 4 7 10 12]+";
if ( gradeInput.isEmpty() )
{
JOptionPane.showMessageDialog( null, "Nothing entered!" );
gradeInput = gradeInput();
} else if ( !gradeInput.matches( REGEX_POSSIBLE_GRADES ) ) {
JOptionPane.showMessageDialog( null, "Not a possible Grade!" );
gradeInput();
}
return gradeInput;
}
// --------------------------------- METHODS ---------------------------------\\
public static int sum( String[] grades )
{
int sum = 0;
int[] gradesToInt = new int[grades.length];
for ( int i = 0; i < grades.length; i++ )
{
if ( grades[i].isEmpty() )
{
gradesToInt[i] = 0;
} else {
gradesToInt[i] = Integer.parseInt(grades[i]);
}
sum += gradesToInt[i];
}
return sum;
}
public static double average( String[] grades )
{
int sum = 0;
int index = 0;
int[] gradesToInt = new int[grades.length];
for ( int i = 0; i < grades.length; i++ )
{
if ( grades[i].isEmpty() )
{
gradesToInt[i] = 0;
} else {
gradesToInt[i] = Integer.parseInt(grades[i]);
index++;
}
sum += gradesToInt[i];
}
double average = sum / index;
return average;
}
}[/code] [/SPOILER]