Ergebnis 1 bis 4 von 4
  1. #1

    Standard mein programm kommt immer ins hauptmenü zurück

    hey,
    ich hab grad nen programm zur brechnung des arithmetischen mittels von
    2,3,n-Zahlen geschrieben.
    wenn ich das ohne schleifen habe funzt es abber mit ner schleife geht das iwie nicht ich schau schon seit ner stunde drauf und finde nirgends den scheiß fehler.
    Code:
    /**
      *
      * Beschreibung
      *
      * @version 1.0 vom 17.10.2008
      * @author
      */
    
    public class afs {
    
      public static void main(String[] args) {
        int p, aa;
             double e,f,g,h;
            Out.println(" ");
            Out.println(" ");
            for(int r=0; r!=4; r=r)
            {
             Out.println("Arithmethisches Mittel von:");
             Out.println("1= 2Zahlen, 2= 3Zahlen, 3=n-Zahlen, 4=Menue");
             r = In.readInt();
              while(r!=1 && r!=2 && r!=3 && r!=4)
              {
               Out.println("ungueltige Eingabe");
               Out.println("1= 2Zahlen, 2= 3Zahlen, 3=n-Zahlen, 4=Menue");
               r = In.readInt();
              }
                 if(r==1)
                 {
                    Out.println(" ");
                    Out.println(" ");
                    Out.println("Gib bitte die erste Zahl ein");
                    e = In.readDouble();
                    Out.println("Gib bitte die zweite Zahl ein");
                    f = In.readDouble();
                    g= (e+f)/2;
                    Out.println("Das Arithmethische Mittel ist: "+g);
                    Out.println(" ");
                    Out.println(" ");
                    Out.println("Arithmethisches Mittel von:");
                    Out.println("1= nochmal, 2= 3Zahlen, 3=n-Zahlen, 4=Menue");
                    p = In.readInt();
                      if(p==1)
                       {
                         r=1;
                       }
                       else if(p==2)
                       {
                         r=2;
                       }
                       else if(p==3)
                       {
                         r=3;
                       }
                       else if(p==4)
                       {
                         r=4;
                       }
                       while(p>4 && p<0)
                       {
                        Out.println("ungueltige Eingabe");
                        Out.println("1= nochmal, 2= 3Zahlen, 3=n-Zahlen, 4=Menue");
                        p = In.readInt();
                       }
    
    
                 }
                  else if(r==2)
                  {
                    Out.println(" ");
                    Out.println(" ");
                    Out.println("Gib bitte die erste Zahl ein");
                    e = In.readDouble();
                    Out.println("Gib bitte die zweite Zahl ein");
                    f = In.readDouble();
                    Out.println("Gib bitte die dritte Zahl ein");
                    g = In.readDouble();
                    h= (e+f+g)/3;
                    Out.println("Das Arithmethische Mittel ist: "+h);
                    Out.println(" ");
                    Out.println(" ");
    
                      Out.println("Arithmethisches Mittel von:");
                      Out.println("1= nochmal, 2= 2Zahlen, 3=n-Zahlen, 4=Menue");
                      p = In.readInt();
                       while(p!=1 && p!=2 && p!=3 && p!=4)
                       {
                        Out.println("ungueltige Eingabe");
                        Out.println("1= nochmal, 2= 2Zahlen, 3=n-Zahlen, 4=Menue");
                        p = In.readInt();
                       }
                       if(p==1)
                       {
                         r=2;
                       }
                       else if(p==2)
                       {
                         r=1;
                       }
                       else if(p==3)
                       {
                         r=3;
                       }
                       else if(p==4)
                       {
                         r=4;
                       }
    
                  }
                  else if(r==3)
                  {
                    Out.println(" ");
                    Out.println(" ");
                    g = 0;
                    Out.println("Von wievielen Zahlen soll das Arithmetische Mittel bestimmt werden?");
                    aa = In.readInt();
                      for(int z=1; z<=aa; z++)
                      {
                       Out.println("Gib bitte die "+z+ " Zahl ein");
                       f = In.readDouble();
                       g = g +f;
                      }
                      e = g/aa;
                    Out.println("Das Arithmethische Mittel ist: "+e);
                    Out.println(" ");
                    Out.println(" ");
    
                      Out.println("Arithmethisches Mittel von:");
                      Out.println("1= nochmal, 2= 3Zahlen, 3=n-Zahlen, 4=Menue");
                      p = In.readInt();
                       while(p!=1 && p!=2 && p!=3 && p!=4)
                       {
                        Out.println("ungueltige Eingabe");
                        Out.println("1= nochmal, 2= 2Zahlen, 3= 3Zahlen, 4=Menue");
                        p = In.readInt();
                       }
                       if(p==1)
                       {
                         r=4;
                       }
                       else if(p==2)
                       {
                         r=1;
                       }
                       else if(p==3)
                       {
                         r=2;
                       }
                       else if(p==4)
                       {
                         r=4;
                       }
    
                  }
    
            }
    
      }
    }
    ach und für das out und in braucht ihr noch ne klasse die ich immer benutze (hab die von meinem allten info lehrer^^)
    hier habs sie euch mal geuppt (sind nur paar kb, deshalb auf rapidshare):
    http://rapidshare.com/files/154922635/In_out.rar
    dadurch spart man sich das System. davor.

    mfg.
    pr0g4mer
    Ich habe keine Signatur mehr, und das ist auch gut so ^^

  2. #2
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Ich bin zwar kein geübter JavaProgrammierer, aber das habe ich noch zusammen gebracht:

    Code:
    /*
     Moegliche Ausgabe:
     Arithmetisches Mittel(4, 7, 2, 1) = 3
    */
    public class ArithmetischesMittel
    {
    	// Main-Methode
    	public static void main(String[] args)
    	{
    		// Summe vereinbaren und mit 0 initialisieren
    		int Summe = 0;
    		// Ausgabe
    		System.out.print("Arithmetisches Mittel(");
    		// vereinbare eine neue Variable c und initialisiere sie mit 0
    		// wiederhole solange wie gillt: c kleiner als args.length (Anzahl der Stringelemente im Array args)
    		// nach jedem Schleifendurchlauf: addiere 1 zu c
    		for(int c = 0; c < args.length; c++)
    		{
    			// versuche...
    			try
    			{
    				// Parsen von args[c] zu int und addition zu Summe
    				Summe += Integer.parseInt(args[c]);
    			}
    			// falls Fehler...
    			catch(Exception e)
    			{
    				// Ausgabe einer Fehlermeldung
    				System.out.println("FALSCHES_ARGUMENT(" + args[c] + ")) = FEHLER");
    				// Programm beenden
    				return;
    			}
    			// Ausgabe des Strings
    			System.out.print(args[c]);
    			// wenn args[c] noch nicht das letzte Element von args darstellt...
    			if (c != args.length - 1)
    				// schreibe noch ein Komma und ein Leerzeichen
    				System.out.print(", ");
    		}
    		// Summe durch Anzahl der Elemente des Arrays args teilen
    		Summe /= args.length;
    		// Ausgabe des Ergebnisses
    		System.out.println(") = " + Summe);
    	}
    }
    Der Code sollte ausreichend kommentiert sein und ist meiner Meinung nach noch gut ausbaufähig.
    Falls du wie in deinem Beispiel mit doubles arbeiten willst, so sollte eine Änderung des Datentyps von "Summe" und eine Abänderung von Integer.parseInt zu Double.parseDouble abhilfe schaffen.


    mfG. BlackBerry

    EDIT:
    Der Hauptgrund warum ich das neu gemacht habe ist, dass dein Code für ein und das selbe (zB. Arithmetisches Mittel von 2 Zahlen und 3 Zahlen) vieles Doppelt verwendet...

    Am besten wäre ein Implementation meines Codes in eine Methode mit zwei Parametern:
    String-Array mit den Zahlen bzw. Integer- oder Double-Arrays mit den bereits geparsten Werten
    Integer für die Anzahl der zu zählenden Elemente (dann in der Schleife einfach anstelle von args.length, "Laenge" einfügen, oder wie auch immer du die Variable nennen möchtest)

    Dann im Hauptprogramm eine Zahl einlesen ("Von wievielen Zahlen möchten Sie das Arithmetische Mittel berechnen?") und dann solange Zahlen bzw. Strings in einen Array lesen bis man soviele hat und anschließend den Array an die Methode übergeben (+ Anzahl der Elemente für das Arithmetische Mittel)

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  3. #3

    Standard

    hmm also den try befehl kenne ich nicht aber mit dem array hast du schon recht das könnt ich machen ich wollt das halt ohne klassen schrieben da ich das in eine datei haben will (hab so nen super rechner, dammit ich nicht meinen jedes mal suchen muss )
    Ich habe keine Signatur mehr, und das ist auch gut so ^^

  4. #4
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Hier eine Fertige Version:

    Code:
    import java.util.Scanner;
    
    public class ArithmetischesMittel
    {
    	static Scanner in;
    	
    	public static void berechnen(double[] argi, int length)
    	{
    		double Summe = 0;
    		System.out.print("Arithmetisches Mittel(");
    		for(int c = 0; c < length; c++)
    		{
    			Summe += argi[c];
    			System.out.print(argi[c]);
    			if (c != length - 1)
    				System.out.print(", ");
    		}
    		Summe /= length;
    		System.out.println(") = " + Summe);
    	}
    	
    	public static int readLine()
    	{
    		try
    		{
    			return in.nextInt();
    		}
    		catch(Exception e)
    		{
    			return 5;
    		}
    	}
    	
    	public static void main(String[] args)
    	{
    		double[] argi = new double[200];
    		int n = 0, x = 0;
    		in = new Scanner(System.in);
    		
    		System.out.println("Bilde das Arithmetische Mittel von:");
    		System.out.println("  #1 |  zwei Zahlen");
    		System.out.println("  #2 |  drei Zahlen");
    		System.out.println("  #3 |  n Zahlen");
    		System.out.println("  #4 |  [beenden]");
    		System.out.print("> ");
    		
    		while((n = readLine()) != 4)
    		{
    			if (n < 0 || n > 4)
    			{
    				System.out.println("Falsche Eingabe!");
    				return;
    			}
    			else
    			{
    				for(x = 0; (x < (n + 1) || n == 3) && x < 200; x++)
    				{
    					System.out.print("Zahl " + (x + 1) + ": ");
    					try
    					{
    						argi[x] = in.nextDouble();
    					}
    					catch(Exception e)
    					{
    						break;
    					}
    				}
    				berechnen(argi, x);
    			}
    			System.out.print("> ");
    		}
    		System.out.println("[ende]");
    	}
    }

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •