[Java] Variablen übergeben

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von BlackMayBe, 10. September 2011 .

  1. 10. September 2011
    Variablen übergeben

    Ok, dass ist mit Sicherheit keine sonderlich kluge Frage, aber ich bin nur mal ganz am Anfang:

    Und zwar schaffe ich es einfach nicht,meiner Main Klasse eine Varible zu übergeben die ich vorher in einer anderen Klasse eingelesen hab.

    Hier mein Code:


    Code:
    public class Rechner {
    
     public static void main(String[] args) {
     // TODO Auto-generated method stub
    
     int b= 0;
     Eingabe Hier = new Eingabe();
     
     Hier.getBase(b);
     System.out.print ("Die Basis ist"+b);
     }
    
    }
    
    _________
    
    import java.io.*;
    public class Eingabe {
    
     
     
     
     public int getBase(int b){
     
     
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
     
     try{
     System.out.println("Bitte eine zahl eingeben: ");
     b = Integer.parseInt(br.readLine());
     
     }catch(IOException ioe){
     ioe.printStackTrace();
     }catch(NumberFormatException nfe){
     nfe.printStackTrace();
     }
     
     return b;
     }
    }
    
    Ich will einfach nur das ich die Varible B eingeben kann in der Klasse Eingabe und dass sie dann in der Klasse Rechner ankommt... kann mir wer helfen?
     
  2. 10. September 2011
    AW: Variablen übergeben

    meinst du sowas wie

    Code:
    public class Rechner {
    
     public static void main(String[] args) {
     int b = 0;
     Eingabe hier = new Eingabe();
    
     b = hier.getBase(1337);
     System.out.print ("Die Basis ist " + b);
     }
    
    }
    
    
    ?

    man beachte, dass das Argument der Methode getBase total überflüssig ist

    besser wäre (wenn man das überhaupt so machen will)
    Code:
    
    public int getBase(){
     int b = 0;
     .
     .
     .
    }
    
    der Aufruf oben wäre dann
    Code:
    b = hier.getBase();
    
    edit:

    man sollte Variablen immer mit nem kleinen Buchstaben beginnen.
    Es gibt sogenannte Ident Styles, dass sind Richtlinen wie man Quelltext erstellen sollte.
    Davon sollte man sich eins raussuchen, am bestens eins von den beliebteren
    siehe
    Indent style - Wikipedia, the free encyclopedia

    und dann konsequent danach programmieren.
    Wenn man sich das von Anfang an angewöhnt, gehts später nicht schief
     
  3. 10. September 2011
    AW: Variablen übergeben

    Perfekt genau den Aufruf habe ich gesucht!! Danke.

    ok, noch ein letztes Problem:

    ich habs jetzt soweit geschrieben ( ich hab die Math klasse extra nicht benutzt):



    Code:
    public class Rechner {
    
     /**
     * @param args
     */
     public static void main(String[] args) {
     // TODO Auto-generated method stub
     
     RechnerZw Hier = new RechnerZw ();
     
     
    
     int a = Hier.getA();
     
     
     System.out.println ("Ihre Basis ist " +a);
     
     int b= Hier.getB();
     
     System.out.println("Ihre fruchtbarkeit ist" + b);
     
     
    
    
     for (int x =1; x<=b; x++){
     int c =a*a;
     
     System.out.println(""+d);
     }
    }}
    
    
    ________
    
    import java.io.*;
    public class RechnerZw {
    
     
     
     public int getA (){
     int a=0;
     
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
     
     try{
     System.out.println("Bitte eine zahl eingeben: ");
     a = Integer.parseInt(br.readLine());
     
     }catch(IOException ioe){
     ioe.printStackTrace();
     }catch(NumberFormatException nfe){
     nfe.printStackTrace();
     }
     
     return a;
     
     }
     
    
     public int getB (){
     int b=0;
     
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
     
     try{
     System.out.println("Bitte eine zahl eingeben: ");
     b = Integer.parseInt(br.readLine());
     
     }catch(IOException ioe){
     ioe.printStackTrace();
     }catch(NumberFormatException nfe){
     nfe.printStackTrace();
     }
     
     return b;
    
    
    
    }
    }

    Ok jetzt meine Fragen:
    1. Beim Potenzen berechnen hab ich eine for Schleife erstellt mit der Variablen c allerdings möchte ich das beim ersten Schleifendurchlauf gerechnet wird c*c dann aber das Ergebnis davon *c und so weiter (halt ne fruchtbarkeit) wie würde man das schreiben?

    2. Ich würde gerne das Potenzausrechnen mit in der Klasse "Eingabe" haben, allerdings werden dann a und b nicht gefunden... das hat irgendwas mit der Vererbung zu tun... kann mich jemand aufklären warum das nicht funktioniert? ob es überhaupt funktioniert? und wenn ja wie es funktioniert?
     
  4. 11. September 2011
    AW: Variablen übergeben

    Erstmal vorab: Ich würde vorallem beim neu lernen einer Programmiersprache von Anfang an darauf achten, dass der Code sauber geschrieben und kommentiert ist. Vorallem solltest du dir von Anfang an schon angewöhnen deine Klassen und Methoden zu kapseln und um es somit später anderen und dir selbst leichter zu machen den Code zu editieren und zu verstehen.

    Zu 1.) Hier könntest du entweder mit Recursion arbeiten und dann an einer bestimmten Stelle abbrechen oder du nimmst eine while true schleife und frägst den User nach welchem Durchlauf er abbrechen will (geht auch mit for())

    Zu 2.) Versuche mal in deiner RechnerZw Klasse wie oben erwähnt eine read() Methode abzukapseln und a und b als Membervariable zu speichern. Diese holst du dir dann mit den vorhandenen getA() und getB() Methoden.

    Wenn dir manche Begriffe nichts sagen einfach kurz googlen.

    [Edit] Hier noch kurz ein kleines Beispiel.

    Code:
    public class RechnerZw {
    
     // these are our member variables
     private int a;
     private int b;
     // memberVariable for our BufferedReader
     private BufferedReader reader = null;
    
     public RechnerZw() {
     // create our bufferedReader
     reader = new BufferedReader(new InputStreamReader(System.in));
     }
    
     public void getInput(char var) {
    
     switch(var) {
     case 'a': a = getUserInput();
     // put more variable cases here
     }
     }
    
     private int getUserInput() {
     // read Userline here and convert to int
     return 1;
     }
    
     public int getA() {
     return a;
     }
    
     public int getB() {
     return b;
     }
    }
    Code:
    public class Rechner {
    
     public static void main(String[] args) {
     RechnerZw rechner = new RechnerZw();
     // here you could improve a lot with encapsulation
     // and making the variable always be the same
     rechner.getInput('a');
     doSomeStuff(rechner.getA());
     }
    
     private static void doSomeStuff();
    }
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.