[Java] kopf gesteuerte schleife:

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Mr.y, 28. September 2008 .

Schlagworte:
  1. 28. September 2008
    kopf gesteuerte schleife:

    hallo, hab ein programm, wo 3 bedienungen erfüllt werden müssen:
    kapital, zinssatz und die laufzeit.
    mit der fußgesteuerten schleife ist es kein proble, aber mit der kopfgesteuerten hab ich ein problem
    so sieht es aus:

    Code:
    import java.io.*;
    
     public class Zinsen{
    
     public static void main (String argv[]) throws IOException
    
     {
    
     double kapital;
     double zinssatz;
     double laufzeit;
     double zinsen=0;
     BufferedReader eingabe= new BufferedReader (new InputStreamReader(System.in));
    
     System.out.println ("Bitte geben sie ihren Kapital ein ");
     kapital = Double.parseDouble (eingabe.readLine());
    
    
     while (kapital>5 && kapital<10000000)
     {
    
     System.out.println ("Bitte geben sie ihren zinssatz ein ");
     zinssatz = Double.parseDouble (eingabe.readLine());
    
    
    
     while(zinssatz>=1 && zinssatz<=15)
     {
    
     System.out.println ("Bitte geben sie die Laufzeit ein ");
     laufzeit = Double.parseDouble (eingabe.readLine());
    
    
    
     while(laufzeit>=1 && laufzeit<=50)
     {
    
    
     }
     }
     }
    zinsen=((zinssatz*kapital*laufzeit)/100);
    
    System.out.println("Zinsen betragen " + zinsen);
    }
    }
    Der gedanke ist ja: er prüft bei "while" ob die bedienung erfüllt ist, wenn nicht, dann kommt die aufforderung noch mal und wenn ja, dann wird die nächste "while" geprüft usw...
    irgendwie klappt das nicht
     
  2. 28. September 2008
    AW: kopf gesteuerte schleife:

    Das ganze macht keinen Sinn. Schon alleine diese Codeline:
    Code:
     while (kapital>5 && kapital<10000000) 
    Das würde ja bedeuten er macht alles was darunter steht unendlich mal, da sich der Wert für Kapital nie wieder ändern wird.


    "er prüft bei "while" ob die bedienung erfüllt ist"
    --> Dafür würde ich eine If-Condition nehmen .. also if (kapital>0) { [...] }

    oder da du ja eine ioexception verwendest mit try & catch. Gucks dir nochmal an, habe keine Lust jetzt alles neu zu schreiben.. aber die while-schleifen machen für mich keinen Sinn.
     
  3. 28. September 2008
    AW: kopf gesteuerte schleife:

    warum ne schleife?

    Code:
    import java.io.*;
    
    public class Zinsen {
     private BufferedReader _input;
     
     public static void main(String argv[]) throws IOException {
     _input = new BufferedReader(new InputStreamReader(System.in));
     
     double kapital = getCapital();
     double zinssatz = getRate();
     double laufzeit = getLifetime();
     
     double zinsen = ((zinssatz * kapital * laufzeit) / 100);
     System.out.println("Zinsen betragen " + zinsen);
     }
     
     private double getCapital() {
     double temp;
     System.out.println("Bitte geben sie ihren Kapital ein ");
     temp = Double.parseDouble(_input.readLine());
     
     if(temp > 5 && temp < 10000000)
     return temp;
     
     System.out.println("Eingabe fehlerhaft!");
     return getCapital();
     }
     
     private double getRate() {
     double temp;
     System.out.println("Bitte geben sie ihren Zinssatz ein ");
     temp = Double.parseDouble(_input.readLine());
     
     if(temp >= 1 && temp <= 15)
     return temp;
     
     System.out.println("Eingabe fehlerhaft!");
     return getRate();
     }
     
     private double getLifetime() {
     double temp;
     System.out.println ("Bitte geben sie die Laufzeit ein ");
     temp = Double.parseDouble(_input.readLine());
     
     if(temp >= 1 && temp <= 50)
     return temp;
     
     System.out.println("Eingabe fehlerhaft!");
     return getLifetime();
     }
    }
    habs ned kompiliert, sollte aber klappen.
     
  4. 28. September 2008
    AW: kopf gesteuerte schleife:

    nur eine kleine addition: die variablen und funktionen müssen static sein, da keine objete diese funktionen aufrufen.
     
  5. 28. September 2008
    AW: kopf gesteuerte schleife:

    ohhh sorry, hab was vergessen, und zwar bei der while-bedienung SOLL kein UND sein, sondern ODER; ALSO muss es dann ungefähr so aussehen

    Code:
    import java.io.*;
    
     public class Zinsen{
    
     public static void main (String argv[]) throws IOException
    
     {
    
     double kapital;
     double zinssatz=0;
     double laufzeit=0;
     double zinsen=0;
     BufferedReader eingabe= new BufferedReader (new InputStreamReader(System.in));
    
     System.out.println ("Bitte geben sie ihren Kapital ein ");
     kapital = Double.parseDouble (eingabe.readLine());
    
    
     while (kapital>5 || kapital<10000000)
     {
    
     System.out.println ("Bitte geben sie ihren zinssatz ein ");
     zinssatz = Double.parseDouble (eingabe.readLine());
    
    
    
     while(zinssatz>=1 || zinssatz<=15)
     {
    
     System.out.println ("Bitte geben sie die Laufzeit ein ");
     laufzeit = Double.parseDouble (eingabe.readLine());
    
    
    
     while(laufzeit>=1 || laufzeit<=50)
     {
    
    zinsen=((zinssatz*kapital*laufzeit)/100);
    
     }
     }
     }
    
    
    System.out.println("Zinsen betragen " + zinsen);
    }
    }


    ICH muss das mit der schleife machen
     
  6. 28. September 2008
    AW: kopf gesteuerte schleife:

    hmm, hier nochmal meine version (jetzt auch getestet)
    Code:
    import java.io.*;
    
    public class Zinsen {
     private BufferedReader _input;
     
     public static void main(String argv[]) {
     Zinsen z = new Zinsen();
     }
     
     public Zinsen() {
     _input = new BufferedReader(new InputStreamReader(System.in));
     
     double kapital = getCapital();
     double zinssatz = getRate();
     double laufzeit = getLifetime();
     
     double zinsen = ((zinssatz * kapital * laufzeit) / 100);
     System.out.println("Zinsen betragen " + zinsen);
     }
     
     private double getCapital() {
     double temp;
     System.out.println("Bitte geben sie ihren Kapital ein ");
     
     try {
     temp = Double.parseDouble(_input.readLine());
     } catch(IOException e) {
     temp = 6; //error
     }
     
     if(temp > 5 && temp < 10000000)
     return temp;
     
     System.out.println("Eingabe fehlerhaft!");
     return getCapital();
     }
     
     private double getRate() {
     double temp;
     System.out.println("Bitte geben sie ihren Zinssatz ein ");
     
     try {
     temp = Double.parseDouble(_input.readLine());
     } catch(IOException e) {
     temp = 1; //error
     }
     
     if(temp >= 1 && temp <= 15)
     return temp;
     
     System.out.println("Eingabe fehlerhaft!");
     return getRate();
     }
     
     private double getLifetime() {
     double temp;
     System.out.println ("Bitte geben sie die Laufzeit ein ");
     
     try {
     temp = Double.parseDouble(_input.readLine());
     } catch(IOException e) {
     temp = 1; //error
     }
     
     if(temp >= 1 && temp <= 50)
     return temp;
     
     System.out.println("Eingabe fehlerhaft!");
     return getLifetime();
     }
    }
    versteh ned warum du da ne schleife verwenden musst, isses vielleicht ne hausaufgabe?!

    Code:
    while (kapital>5 || kapital<10000000)
    ist immer true, weil kapital von haus aus kleiner als 5 ist.
     
  7. 28. September 2008
    AW: kopf gesteuerte schleife:

    ja genau, das ist eine^^
    ja weil ich das mit der schleife machen muss, hab das mit der fuß-gesteuerten hinbekommen, aber die kopf-gesteurte klappt irgendwie nicht
     
  8. 28. September 2008
    AW: kopf gesteuerte schleife:

    Das problem ist das dein kapital nicht verändert wird also dementsprechend du in einer endlosschleife gelangst....
     
  9. 28. September 2008
    AW: kopf gesteuerte schleife:

    Code:
    import java.io.*;
    
    class Zinsen2 {
     private BufferedReader _input;
     public Zinsen2() {
     _input = new BufferedReader(new InputStreamReader(System.in));
     
     double kapital = 0;
     String input = "";
     
     while(kapital > 10000000 || kapital < 5) {
     try {
     System.out.println("bitte kapital eingeben");
     input = _input.readLine();
     kapital = Double.parseDouble(input);
     } catch(IOException e) {
     System.out.println("fehler, program wird beendet");
     System.exit(1);
     } catch(NumberFormatException e) {
     if(input.equals("exit")) {
     System.out.println("programm wird beended");
     System.exit(0);
     }
     System.out.println("bitte eine zahl eingeben!\n...");
     kapital = 0;
     }
     }
     
     System.out.println("sie haben \"" + kapital + "\" eingegeben");
     }
     
     public static void main(String args[]) {
     Zinsen2 z = new Zinsen2();
     }
    }
    hier, ich hoffe ich konnte helfen.
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.