Java-Forum.org  

Zurück   Java-Forum.org > Java - Programmierung > Java Basics - Anfänger-Themen

Java Basics - Anfänger-Themen: Mein erstes Programm

Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern

Thema geschlossen    
Themen-Optionen Thema durchsuchen Ansicht
Alt 18.01.2006, 17:55   #1
aKuJii
 
Mein erstes Programm - Standard Mein erstes Programm

Hallo liebe Community!

Ich fange gerade erst an mir JAVA bei zubringen also seid bitte net so hart zu mir ^^.
Wollte mal fragen was ihr zu meinem Programm sagt?
Es ist noch auf Consolen ebene also ihr müsste es mit JCreator oder sonst was öffnen.

Code:
import java.io.*;
 public class Lernprogramm
 {
 static BufferedReader input= new BufferedReader(new InputStreamReader(System.in));
 static int richtig=0;
 static int falsch=0;
 static int wahl=0;
 static int zufallsZahl1=0;
 static int zufallsZahl2=0;
 public static void main (String argv[])throws IOException
 {
 int auswahl=-6;
 while (auswahl !=0)
 {
 System.out.println("\t Grundrechenarten Lernprogramm");
 System.out.println("\n\n ");
 System.out.println("\t 1 - Addition von zwei Zahlen");
 System.out.println("\t 2 - Subtraktion von zwei Zahlen");
 System.out.println("\t 3 - Multiplikation von zwei Zahlen");
 System.out.println("\t 4 - Division von zwei Zahlen");
 System.out.println("\t 5 - Hilfe");
 System.out.println("\t 0 - ENDE");
 System.out.println("\n");
 System.out.print("\t Ihre Wahl: ");
 
 try
 {
 auswahl=Integer.parseInt(input.readLine());
 System.out.println();
 switch(auswahl)
 {
 case 1: add(); break;
 case 2: sub(); break;
 case 3: multi(); break;
 case 4: div(); break;
 case 5: hilfe(); break;
 }
 if(auswahl >0 && auswahl <=5)
 {
 System.out.println("\n\n\t Sie haben "+richtig+" von "+(richtig+falsch)+" Aufgabe(n) richtig geloest!");
 }
 else if(auswahl!=0)System.out.println("\t Bitte die Ziffern 0 bis 5 verwenden!");
 }
 catch(NumberFormatException e){ System.out.println("\n\t Bitte die Ziffern 0 bis 5 verwenden!");
                                 System.out.println("");
                                 System.out.println("\n\t *********************************"); }
 }
 
 }
 
 /*
  *Static void add()
  */
 static void add()throws IOException
 {
 	int erg=0,ergR=0;
 	boolean ok=true;
 	
  	do{
  	zufallsZahl1=zufallsZahl(10,1);
 	zufallsZahl2=zufallsZahl(20,1);
 	ergR=zufallsZahl1+zufallsZahl2;
  	do{
  	try{
 	ok=false;	
    System.out.print(""+zufallsZahl1+"+"+zufallsZahl2+"= ");
    erg=Integer.parseInt(input.readLine());
    if(erg==ergR){
    	System.out.println("Sie haben das korrekte Ergebnis eingegeben!");
    	richtig++;
    	System.out.print("Moechten Sie aufhoeren?ja(-0)nein(1)");
    	System.out.print("Ihre Wahl: ");
    	wahl=Integer.parseInt(input.readLine());
    }    
    else
    {
    	System.out.println("Sie haben das falsche Ergebnis eingegeben, Das richtige ergebnis lautet: "+ergR);
    	falsch++;
    }
    } catch (NumberFormatException e) {
    	System.out.println("Bitte nur Zahlen eingeben");
    	ok=true;}
    }while(ok);
   } while(wahl!=-0); 
   }
  /*
  *Static void sub()
  */
 static void sub()throws IOException
 {
 	int erg=0,ergR=0;
 	boolean ok=true;
 	
  	do{
  	zufallsZahl1=zufallsZahl(10,20);
 	zufallsZahl2=zufallsZahl(20,1);
 	ergR=zufallsZahl1-zufallsZahl2;
  	do{
  	try{
 	ok=false;	
    System.out.print(""+zufallsZahl1+"-"+zufallsZahl2+"= ");
    erg=Integer.parseInt(input.readLine());
    if(erg==ergR){
    	System.out.println("Sie haben das korrekte Ergebnis eingegeben!");
    	richtig++;
    }    
    else
    {
    	System.out.println("Sie haben das falsche Ergebnis eingegeben, Das richtige ergebnis lautet: "+ergR);
    	falsch++;
    }
    } catch (NumberFormatException e) {
    	System.out.println("Bitte nur Zahlen eingeben");
    	ok=true;}
    }while(ok);
   } while(erg!=-0); 
 }
  /*
  *Static void multi()
  */
 static void multi()throws IOException
 {
 	 	int erg=0,ergR=0;
 	boolean ok=true;
 	
  	do{
  	zufallsZahl1=zufallsZahl(10,1);
 	zufallsZahl2=zufallsZahl(20,1);
 	ergR=zufallsZahl1*zufallsZahl2;
  	do{
  	try{
 	ok=false;	
    System.out.print(""+zufallsZahl1+"*"+zufallsZahl2+"= ");
    erg=Integer.parseInt(input.readLine());
    if(erg==ergR){
    	System.out.println("Sie haben das korrekte Ergebnis eingegeben!");
    	richtig++;
    }    
    else
    {
    	System.out.println("Sie haben das falsche Ergebnis eingegeben, Das richtige ergebnis lautet: "+ergR);
    	falsch++;
    }
    } catch (NumberFormatException e) {
    	System.out.println("Bitte nur Zahlen eingeben");
    	ok=true;}
    }while(ok);
   } while(erg!=-0); 
 }
  /*
  *Static void div()
  */
 static void div()throws IOException
 {
 	int erg=0,ergR=0;
 	boolean ok=true;
 	
  	do{
  	zufallsZahl1=zufallsZahl(10,20);
 	zufallsZahl2=zufallsZahl(20,1);
 	ergR=zufallsZahl1/zufallsZahl2;
  	do{
  	try{
 	ok=false;	
    System.out.print(""+zufallsZahl1+"/"+zufallsZahl2+"= ");
    erg=Integer.parseInt(input.readLine());
    if(erg==ergR){
    	System.out.println("Sie haben das korrekte Ergebnis eingegeben!");
    	richtig++;
    }    
    else
    {
    	System.out.println("Sie haben das falsche Ergebnis eingegeben, Das richtige ergebnis lautet: "+ergR);
    	falsch++;
    }
    } catch (NumberFormatException e) {
    	System.out.println("Bitte nur Zahlen eingeben");
    	ok=true;}
    }while(ok);
   } while(erg!=-0); 
 }
  /*
  *Static void hilfe()
  */
 static void hilfe()
 {
 	System.out.print("Um in ein Menue zu wechseln druecken sie bitte im Hauptmenue eine Zahl von 1-5");
 	System.out.print("Die Zahl fuer das Menue in das sie wollen befindet sich vor der Beschreibeung ");
 	System.out.print("des Programmes");
 }
 /*
  *Static void zufallZahl()
  */
 static int zufallsZahl(int z,int anf)
 {
 int zahl=(int)(anf+Math.random()*z);
 return zahl;
 }
 }
was sagt ihr dazu`? Soll ein Lernprogramm für die Grundschule sein. (Natürlich nicht, aber der einfachhalts halber sag ichs mal so =) ) Mein Problem ist nur bei der Division das ich da immer die Falschen zahlen bekommen so das Komma Zahlen rauskommen. Ist das der Begriff Float mit komma zahlen?

mfG Chris
 

 
Anzeige
 

AW: Mein erstes Programm



 
Alt 18.01.2006, 18:08   #2
MPW
 
Mein erstes Programm - Standard AW: Mein erstes Programm

Ich bin gerade ein bisschen blind, wo ist denn ergR deklariert, ist das ein float?(Ich find das irgendwie nicht in deinem Code)
 
Alt 18.01.2006, 18:13   #3
aKuJii
Themenstarter
 
Mein erstes Programm - Standard AW: Mein erstes Programm

ergR ist das was der Computer rechnet um es später bei der IF schleife zu vergleichen.

erg = Was der USer tippt
ergR = was der Computer ausrechnet

ergR wird immer in der Methode deklariert wenn du das meinst (int ergR)

bitte net so fach ausdrücke ^^ bin noch net so der profi
 
Alt 18.01.2006, 18:16   #4
 
Mein erstes Programm - Standard AW: Mein erstes Programm

Für ein Erstlingswerk, gar nicht übel

Zur Division: int / int gibt int. Also z.B. 7 / 2 ergibt 3. Um das zu umgehen, verwendest du mit Vorteil "float" oder "double" (einfache bzw. doppelte Präzision Flieskommazahlen).

Zu deinem Program, da habe ich folgende Kritiken:
- Codeeinrückung ist misserabel. In der zweiten Hälfte wird es zwar besser, aber sauber ist das noch nicht. Gewöhn dir unbedingt an, die richtige Anzahl Tabulatoren/Leerzeichen vor einer Linie Code zu machen. Die Codeeinrückung erleichtert die Suche nach Fehlern, oder ganz allgemein das Lesen des Codes, ungemein.
- Nimm etwas aussagekräftigere Namen für Variablen und Methoden.
- Du hast ein bisschen gar oft denselben Code in den verschiedenen Methoden. Überleg dir mal, wie du diesen doppelten Code in eigene Methoden auslagen könntest.
- Objektorientierte Programmierung sagt dir offensichtlich noch nicht viel. Das würde ich unbedingt anschauen. Mit OOP wäre dein Programm total anders aufgebaut (und ich kann dir garantieren, es wäre noch übersichtlicher )
- Und gewöhn dir das "static" nicht zusehr an. Das Ding ist einfach "böse", man kann damit herrlich unflexiblen, fehlerbehafteten Code schreiben (sobald du OOP benutzt, solltes du versuchen, auf static zu verzichten).
- Es gibt keine If-Schleife! Es gibt If-Verzweigungen, Bedingungen, Abschnitte, von mir aus Kreuzungen, aber keine Schleifen!
 
Alt 18.01.2006, 18:21   #5
aKuJii
Themenstarter
 
Mein erstes Programm - Standard AW: Mein erstes Programm

Ja das mit der einrückung mache ich noch nicht so stimmt =)
OOP sagt mir rein gar nix. ist das jframe zeugs??

was ist an static so schlimm?
wo muss ich dann das float oder double setzten? vor ergR rechnung? kannnst du mir vllt den abschnitt mal posten?


ALLES KLAR^^
 
Alt 18.01.2006, 18:43   #6
 
Mein erstes Programm - Standard AW: Mein erstes Programm

Über OOP wurden (und werden) ganze Bücher geschrieben... JFrame ist ein Teil davon, ebenso der String. Es geht dabei um die Darstellung von Strukturen im Code und während der Laufzeit. OOP erlaubt mehrere Werte als "logische Einheit" aufzufassen, und als Ganzes in einem Programm hin und her zu schicken (inklusive Methoden die zu dem Objekt passen). Z.B. ist ein String eine Sammlung von Buchstaben, mit passenden Methoden wie "length()"...

Wenn du sagst "static Haus xyz" kann es im gesammten Programm nur ein einziges Haus xyz geben. Wie soll man damit eine Stadt darstellen können? Static ist sozusagen das Gegnerparadigma zu OOP, in der es um die unabhängige Darstellung von Daten geht.
"static" ist extrem bequem in der Anwendung (deshalb wird es auch von vielen Leuten benutzt), Programme mit vielen "statics" sind jedoch meist sehr unflexibel, wenn es darum geht, mal etwas abzuändern (z.B. eine Stadt und nicht nur ein einzelnes Haus darstellen).

Das float: dort wo jetzt noch int steht (in der Division nur). Um Benutzereingaben als floats einzulesen, kannst du Float.parseFloat benutzen.
 
Alt 18.01.2006, 18:55   #7
Illuvatar
 
Mein erstes Programm - Standard AW: Mein erstes Programm

Zitat: Beni
Über OOP wurden (und werden) ganze Bücher geschrieben... JFrame ist ein Teil davon, ebenso der String. Es geht dabei um die Darstellung von Strukturen im Code und während der Laufzeit. OOP erlaubt mehrere Werte als "logische Einheit" aufzufassen, und als Ganzes in einem Programm hin und her zu schicken (inklusive Methoden die zu dem Objekt passen). Z.B. ist ein String eine Sammlung von Buchstaben, mit passenden Methoden wie "length()"...
Das Zitat muss ich mir für meine GFS dieses Jahr merken
 
Thema geschlossen    

Zurück   Java-Forum.org > Java - Programmierung > Java Basics - Anfänger-Themen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen: Mein erstes Programm

Mein erstes Programm, HELP!!
Mein erstes Programm, HELP!!: class TestTestT { public static void main(String args){ Student s = new Student("Martin Müller","Hauptstraße",756456); Person2 p1 = new Person2("Harald Schmidt","Marktplatz"); ...
Mein erstes Programm flackert
Mein erstes Programm flackert: Hallo liebe Forumleser, ich habe ein Problem mit meinem ersten Programm, und zwar flackert es wenn ich es ausführe. Quellcode: package pingpong; import java.awt.*; import...
Mein erstes Programm
Mein erstes Programm: Hallo, hier ist mein erstes eigenes (vollständiges) Programm: Es handelt sich um einen Text-Editor (nicht sehr einfallsreich und nützlich:oops:, sowas hat ja jedes Betriebssystem schon selber), aber...
(Methoden) Mein erstes Programm - und gleich Probleme
Mein erstes Programm - und gleich Probleme: Hallo Leute, bin ziemlich neu hier(gerade erst registriert) und will auch gleich mein erstes Problem schildern. Es geht um eine Aufgabe für die Uni, ich studiere zwar kein Informatik, aber gemacht...
Sammlung von Anfängerfragen für mein erstes Programm
Sammlung von Anfängerfragen für mein erstes Programm: Hallo Java-Freunde, ich bin neu hier und auch noch relativ frisch was die Javaprogrammierung angeht. Da sich mir momentan ein paar Fragen stellen, auf die ich nicht so wirklich Antworten habe,...




Sie betrachten gerade Mein erstes Programm