Notendurchschnitt

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Ich mach ebie diesem Progreamm irgendetwas falsch

Also das soll das Programm erfüllen:

1.Eingabe einer Anzahl n un dder werte von x1 x2 usw.bis xn(xi hat jeweils denWert 1,2,3,4 oder 5) von der Tastatur (ohne Prüfung der korrkten Dateneingabe).

2 Berechnung und Ausgabe des Notendurchschnittes asl arithmetischer Mittelwert.

3.Die Notne ausgeben die besser als der Notendurhschit waren.

4. Ausgabe der Anzahlen der ereichtne n noten.

Also ich komme am 2 Punkt irgendwie nich tweiter.

wo liegt den Der Fehler in meinenm Programm????

Danke im voraus


Code:
class Noten
{
	public static void main(String args[])
	{
		double x[];/*Array für die Noten*/
		double sum=0;/*Summe der Noten*/
		double Notenschn=0;/*Notendurchschnitt*/
		int i;/*Zähler*/
		int n;/*Anzahl der werte n*/
		System.out.println("Geben sie die Anzahl der Notne ein");
		n=IO1.einint();
		x=new double[n+1];
		for(i=0;i<=n-1;i++);
		{
			System.out.println("Bitte geben sie die Noten für "+n+" ein");
			x[i]=IO1.eindouble();
			sum=sum+x[i];
			
		}
		Notenschn=sum/n;
		
		System.out.println("Ihre Summe lautet:"+sum);
		
		System.out.println("Ihr Notendurchschnitt lautet:"+Notenschn);	
	}
}

Geben sie die Anzahl der Notne ein
5
Bitte geben sie die Noten f³r 5 ein
2
Ihre Summe lautet:2.0
Ihr Notendurchschnitt lautet:0.4

da kann etwas nciht stimmen
 
G

Gast

Gast
Mach doch mal folgende zwei Änderungen:
1. double x[] wird zu double[] x
2. for(i=0;i<=n-1;i++); wird zu for(i=0;i<=n-1;i++)
 
G

Guest

Gast
Code:
class Noten
{
	public static void main(String args[])
	{
		double x[];/*Array für die Noten*/
		double sum=0;/*Summe der Noten*/
		double Notenschn=0;/*Notendurchschnitt*/
		int i;/*Zähler*/
		int n;/*Anzahl der Schüler n*/
		System.out.println("Geben sie die Anzahl der Schüler an");
		n=IO1.einint();
		x=new double[n+1];
		for(i=1;i<=5;i++);
		{
			System.out.println("Bitte geben sie die Anzahl für die Note "+i+" ein");
			x[i]=IO1.eindouble();
			sum=sum+x[i];
			System.out.println("Für Ihre Note "+i+" erhallten sie "+x[i]+"");
		}
		Notenschn=Notenschn/n;
		System.out.println("Ihr Notendurchschnitt lautet:"+Notenschn);	
	}
}

Also bis jetzt hat es nicht wirklich was gebracht bekomme jetzt so einen Fehler

Geben sie die Anzahl der Sch³ler an
5
Bitte geben sie die Anzahl f³r die Note 6 ein
4
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at Noten.main(Noten.java:16)

Also das heißt dsoch so wei tich weiß das der Array versuch tauf Speicherplatz zuzugreifne wo keiner ist oder?
 
G

Guest

Gast
upppppppppppppps

is tmir das peinlich

:oops: :oops: :oops:

Also jetzt berechnet er den Durchschnitt,aber er macht immer noch einen Fehler

wenn ich die Anzahl der Schüler 20 eingebe, und und für z.b eine Note1 22 eingebe dann zeigt er mir keine Fehler

hier ist das Programm



Code:
class Noten
{
	public static void main(String args[])
	{
		double []x;/*Array für die Noten*/
		double sum=0;/*Summe der Noten*/
		double wa;/**/
		double Notenschn=0;/*Notendurchschnitt*/
		int i;/*Zähler*/
		int n;/*Anzahl der Schüler n*/
		System.out.println("Geben sie die Anzahl der Schüler an");
		n=IO1.einint();
		x=new double[n+1];
		for(i=1;i<=5;i++)
		{
			System.out.println("Bitte geben sie die Anzahl für die Note "+i+" ein");
			x[i]=IO1.eindouble();
			wa=x[i]*i;
			sum=sum+wa;
			System.out.println("Für Ihre Note "+i+" erhallten sie "+x[i]+"");
			
		}
		Notenschn=sum/n;
		System.out.println("Ihr Notendurchschnitt lautet:"+Notenschn);	
	}
}

werde versuchen slebst darauf zu kommen,aber ein if Anbfrage wäre doch sinnvoll oder?
 
G

Gast

Gast
Naja ich würde einfach schauen, ob die Zahl der Noten für die Note x kleiner ist als die verbleibende Schülerzahl.

Beispiel:
Insgesamt: 20 Schüler

Note 1: 11 Schüler -> verbleiben 9
Note 2: 6 Schüler -> verbleiben 5
Note 3: 7 Schüler -> ERROR da 7 > 5
 

0x7F800000

Top Contributor
Code:
import java.io.*;

class Noten
{
   public static void main(String args[])throws Exception
   {
      BufferedReader r=new BufferedReader(new InputStreamReader(System.in));
	  
      int sum=0;				/*Summe der Noten*/
      int n;					/*Anzahl der Schüler n*/
      
      System.out.println("Geben sie die Anzahl der Schüler an");
      n=Integer.parseInt(r.readLine());
 
      for(int i=1;i<=n;i++)
      {
         System.out.println("Bitte geben sie die Anzahl für die Note "+i+" ein");
         sum+=Integer.parseInt(r.readLine());
         System.out.println("Der bisherige Durschnitt:"+(sum/(double)i));
      }
      System.out.println("Ihr Notendurchschnitt lautet:"+(sum/(double)n));   
   }
}

-bitte hör auf jedes mal fünfzig unnötige variablen in dein programm einzubauen. Mit zwei geht es doch schon wunderbar.
-sowas wie Zählervariablen deklariert man direkt in der for-schleife, dann ist ein kommentar auch nicht nötig
-poste bitte ausführabare Codestücke, wenn es geht. Es ist nervig dieses bescheuerte "IO1" immer wieder in einen normalen reader umzuändern.
-wenn du schon variablennamen auf deutsch schreibst, dann schreib die doch wenigstens komplett, solchen kram wie "Notendurchschn" kannst du doch selbst nicht eintippen oder? Oder hast du da irgendeine Konvention, wann du wieviele Buchstaben am ende weglässt?
 
G

Guest

Gast
Der macht noch immer den Fehler, obwohl ich eine if Abfrage gemacht habe .

komisch

Code:
class Noten
{
	public static void main(String args[])
	{
		double x[];/*Array für die Noten*/
		double sum=0;/*Summe der Noten*/
		double wa;/**/
		double Notenschn=0;/*Notendurchschnitt*/
		double y=0;/*Für Überprüfung*/
		int i;/*Zähler*/
		int n;/*Anzahl der Schüler n*/
		System.out.println("Geben sie die Anzahl der Schüler an");
		n=IO1.einint();
		x=new double[n+1];
		for(i=1;i<=5;i++)
		{
			System.out.println("Bitte geben sie die Anzahl für die Note "+i+" ein");
			x[i]=IO1.eindouble();
			y=y+x[i];
			if(y!=n)
			{
				System.out.println("Fehler y darf nicht kleiner größer als n sein");
			}
			wa=x[i]*i;
			sum=sum+wa;
			System.out.println("Für Ihre Note "+i+" erhallten sie "+x[i]+"");
			System.out.println("Ihr y lautet:"+y);
		}
		Notenschn=sum/n;
		System.out.println("Ihr Notendurchschnitt lautet:"+Notenschn);	
	}
}

Hier die Ausgabe

Geben sie die Anzahl der Sch³ler an
20
Bitte geben sie die Anzahl f³r die Note 1 ein
30
Fehler y darf nicht kleiner gr÷▀er als n sein
F³r Ihre Note 1 erhallten sie 30.0
Ihr y lautet:30.0
Bitte geben sie die Anzahl f³r die Note 2 ein

also ich finde er sollte direkt wieder alles von neu anfangen,aber irgendwie macht er das nicht

bitte um etwas Hilfe

bzw. um einen kleinen hinweis
 
G

Gast

Gast
um nur zahlen zwischen 1 und 6 zu erfassen kannst du das hier machen:
Code:
    	 String tmp;
    	 System.out.println("Bitte geben sie die Anzahl für die Note "+i+" ein");  
         while(!(tmp = r.readLine()).matches("[1-6]")){
        	 System.out.println("Gib eine Zahl zwischen 1 und 6 ein!");            
         }
         sum+=Integer.parseInt(tmp);

Dein Programm verwirrt mich muss ich sagen. Was willst du genau machen?
Willst du den Durchschnitt aller Noten haben? Wenn ja, wozu brauchst du dann die Anzahl der Schüler? Du jede Notenstufe mit der Anzahl dieser Noten multiplizieren und am Ende durch die Gesamtanzahl teilen. ((11 x 1) + (7 x 2) + ( 9 x 3) + (8 x 4) + (2 x 5) + (8 x 6)) / 45 = 3,1555
 
G

Gast

Gast
Danke für eure Hilfe nur das sind alles Methodne und Aufrufe die ich heute zum erstne Ml höre.

bin Anfängerrrrrrrrrrrr
 
G

Gast

Gast
Und ich wollte es so lösne das ich in meinem Programm nicht sozusagen komplett alles umschreiben muß

Also was da noch fehlt ist halt z.b. ich gebe für die Anzahl der Schüler 10 ein und gebe dann einzel die Noten z.b. 2 Schüler haben eine 3 usw. nur mien PRoblem ist das mein PRogramm ncih tüberprüft ob ich mehr oder weniger als wie in diesem Beispiel n=10 Schüler eingebe.

Bitte da um einen Hinweis
 

0x7F800000

Top Contributor
bei Programmen dieser "Größenordnung" haben Begriffe "komplett" und "alles" keine Bedeutung.
Hinweise:
Code:
for
if
+
-
*
/
=
<
>
()
{}
""
;
.
int 
double
bisher hast du bei all deinen Programmen ja auch nicht mehr verwendet, warum sollte es denn jetzt nicht klappen... :roll:
 

Landei

Top Contributor
Dumme Frage: Warum fragst du die Anzahl der Schüler überhaupt ab? Nimm doch einfach die Summe der Anzahl aller Noten. 5 mit einer Eins und 10 mit einer Zwei und 15 mit einer Drei macht 30 Schüler, oder?
 

Final_Striker

Top Contributor
Gast hat gesagt.:
Und ich wollte es so lösne das ich in meinem Programm nicht sozusagen komplett alles umschreiben muß

muss du aber, weil das was du da konstruiert hast völliger quatsch ist.
außerdem kann man es noch lange nicht als ein "programm" bezeichnen.

Code:
   if(y!=n)
         {
            System.out.println("Fehler y darf nicht kleiner größer als n sein");
         }

was soll denn bitte diese prüfung in der schleife?
es ist ja wohl logisch, dass solange nicht alle noten eingelesen sind y ungleich n sein muss!

lese erst mal alle eingaben ein und beginne erst dann mit dem rechnen.
und verwende normale variablennamen, dass wurde dir heir schon ein paar mal gesagt.
 
G

Guest

Gast
Landei hat gesagt.:
Dumme Frage: Warum fragst du die Anzahl der Schüler überhaupt ab? Nimm doch einfach die Summe der Anzahl aller Noten. 5 mit einer Eins und 10 mit einer Zwei und 15 mit einer Drei macht 30 Schüler, oder?

Danke werde mich sofort ranwagen
 
G

Guest

Gast
Code:
class Noten
{
	public static void main(String args[])
	{
		int x[];/*Da werden die Werte eingegeben*/
		
		double sum=0;/*Summe der Werte*/
		int xsum=0;/*Summe der Additierten Werte*/
		int wa=0;/*Addition der Noten*/
		double Noten;/*Ergebniss des Notendurchschnitt*/
		int i;/*Zähler*/
		int n;/*Zahl die von der Tastatur eingelesen wurde*/
		System.out.println("Bitte geben sie die Anzahl der Noten an");
		n=IO1.einint();
		x=new int[n+1];
		for(i=1;i<=n;i++)
		{
				System.out.println("Geben Sie ihre Werte ein");
				System.out.println("Für ihre Note "+i+" geben sie die Anzahl der Schüler ein");
				x[i]=IO1.einint();
				System.out.println("Für ihre Note "+i+" haben "+x[i]+" erreicht");
				sum=sum+x[i];
				wa=x[i]*i;
				xsum=xsum+wa;
		}
		System.out.println("Ihre Summe lautet:"+sum);
		System.out.println("Ihr xsum lautet:"+xsum);
		Noten=xsum/sum;
		System.out.println("Ihr Notendurchschnitt lautet:"+Noten);
		
	}
}

Bitte geben sie die Anzahl der Noten an
6
Geben Sie ihre Werte ein
F³r ihre Note 1 geben sie die Anzahl der Sch³ler ein
3
F³r ihre Note 1 haben 3 erreicht
Geben Sie ihre Werte ein
F³r ihre Note 2 geben sie die Anzahl der Sch³ler ein
4
F³r ihre Note 2 haben 4 erreicht
Geben Sie ihre Werte ein
F³r ihre Note 3 geben sie die Anzahl der Sch³ler ein
5
F³r ihre Note 3 haben 5 erreicht
Geben Sie ihre Werte ein
F³r ihre Note 4 geben sie die Anzahl der Sch³ler ein
6
F³r ihre Note 4 haben 6 erreicht
Geben Sie ihre Werte ein
F³r ihre Note 5 geben sie die Anzahl der Sch³ler ein
7
F³r ihre Note 5 haben 7 erreicht
Geben Sie ihre Werte ein
F³r ihre Note 6 geben sie die Anzahl der Sch³ler ein
8
F³r ihre Note 6 haben 8 erreicht
Ihre Summe lautet:33.0
Ihr xsum lautet:133
Ihr Notendurchschnitt lautet:4.03030303030303

Habe es hinbekommen

nun fehlt noch der dritte aufgabenpunkt

Also ich muss die Notne ausgeben die besser als der Notendurschnitt waren.

Da muß ich jetzt micxh weiter ranwagen

Danke an alle für die Hilfe udn die harte Kritik

Den in der Härte.

Liegen meine Werte
:D
 
G

Guest

Gast
Also jetzt müsste alles funktionieren

Code:
class Noten
{
	public static void main(String args[])
	{
		int x[];/*Da werden die Werte eingegeben*/
		
		double sum=0;/*Summe der Werte*/
		int xsum=0;/*Summe der Additierten Werte*/
		int wa=0;/*Addition der Noten*/
		double Noten;/*Ergebniss des Notendurchschnitt*/
		int i;/*Zähler*/
		int n;/*Zahl die von der Tastatur eingelesen wurde*/
		System.out.println("Bitte geben sie die Anzahl der Noten an");
		n=IO1.einint();
		x=new int[n+1];
		for(i=1;i<=n;i++)
		{
				System.out.println("Geben Sie ihre Werte ein");
				System.out.println("Für ihre Note "+i+" geben sie die Anzahl der Schüler ein");
				x[i]=IO1.einint();
				System.out.println("Für ihre Note "+i+" haben "+x[i]+" erreicht");
				sum=sum+x[i];
				wa=x[i]*i;
				xsum=xsum+wa;
		}
		System.out.println("Ihre Summe lautet:"+sum);
		System.out.println("Ihr xsum lautet:"+xsum);
		Noten=xsum/sum;
		System.out.println("Ihr Notendurchschnitt lautet:"+Noten);
		for(i=1;i<=Noten;i++)
		{
			System.out.println("Ihre Noten "+i+" und ihre Schüler "+x[i]+"sind besser als "+Noten+"");
		}	
	}
}

Das ist mein Ausgaben

Bitte geben sie die Anzahl der Noten an
6
Geben Sie ihre Werte ein
F³r ihre Note 1 geben sie die Anzahl der Sch³ler ein
1
F³r ihre Note 1 haben 1 erreicht
Geben Sie ihre Werte ein
F³r ihre Note 2 geben sie die Anzahl der Sch³ler ein
2
F³r ihre Note 2 haben 2 erreicht
Geben Sie ihre Werte ein
F³r ihre Note 3 geben sie die Anzahl der Sch³ler ein
3
F³r ihre Note 3 haben 3 erreicht
Geben Sie ihre Werte ein
F³r ihre Note 4 geben sie die Anzahl der Sch³ler ein
4
F³r ihre Note 4 haben 4 erreicht
Geben Sie ihre Werte ein
F³r ihre Note 5 geben sie die Anzahl der Sch³ler ein
5
F³r ihre Note 5 haben 5 erreicht
Geben Sie ihre Werte ein
F³r ihre Note 6 geben sie die Anzahl der Sch³ler ein
6
F³r ihre Note 6 haben 6 erreicht
Ihre Summe lautet:21.0
Ihr xsum lautet:91
Ihr Notendurchschnitt lautet:4.333333333333333
Ihre Noten 1 und ihre Sch³ler 1sind besser als 4.333333333333333
Ihre Noten 2 und ihre Sch³ler 2sind besser als 4.333333333333333
Ihre Noten 3 und ihre Sch³ler 3sind besser als 4.333333333333333
Ihre Noten 4 und ihre Sch³ler 4sind besser als 4.333333333333333


Ich weiß ich hätteweniger Variablen nehmen sollen, aber bin ja noch Anfängerrrrrrrr.

danke ann allle
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben