1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Variablen werden von Schleife nicht erkannt

  • Horrendus
  • 4. April 2007 um 17:08
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Horrendus
    Punkte
    520
    Beiträge
    92
    • 4. April 2007 um 17:08
    • #1

    Hallo Leute,

    und wiedermal stecke ich in meinem Java Selbsstudium fest ;)

    Es geht darum das er Zufallszahlen erzeugen soll und diese sollen je nach Eingabe entweder zwischen zwei Integergrenzen liegen oder zwischen zwei Doublegrenzen.
    Die Grenzen habe ich glaub ich (zumindest nach bischen überlegen und austesten) recht gut hinbekommen, jedoch ist mein Problem das ich es mir in einer Schleife aus mir unbekannten Gründen meine Variablen nicht erkennt und ich nicht drauf komme warum nicht.

    Java
    import java.util.Scanner;
    
    
    
    
    public class RandomNumbers {
    
    
        public static int rnd(int low,int high) {
    	return low + (int) (Math.random()* (high - low));
        }
    
        public static double rnd(double low,double high) {
    	return low + Math.random() * (high - low);
        }
    
        public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
    	System.out.print("Wieviele Zufallszahlen sollen ausgegeben werden? ");
    	int count = sc.nextInt();
    	System.out.println("Sollen Integer oder Double ausgegeben werden (I/D)?)");
    	if (sc.next().equals("I")) {
    	    System.out.print("Was soll die Untergrenze der Zufallszahlen sein? ");
    	    int low = sc.nextInt();
    	    System.out.print("Was soll die Obergrenze der Zufallszahlen sein? ");
    	    int high = sc.nextInt();
    	}
    	else {
    	    System.out.print("Was soll die Untergrenze der Zufallszahlen sein? ");
    	    double low = sc.nextDouble();
    	    System.out.print("Was soll die Obergrenze der Zufallszahlen sein? ");
    	    double high = sc.nextDouble();
    
    	}
    	for (int i = 1; i <= count; i++) {
    	    System.out.println(rnd(low,high)); //hier erkennt er low & high nicht
    	}
        }
    }
    Alles anzeigen
  • Paulchen
    Gast
    • 4. April 2007 um 17:25
    • #2

    Der Scope von Variablen, die innerhalb eines von { und } eingeschlossenen Blocks definiert werden, endet mit }.

  • Horrendus
    Punkte
    520
    Beiträge
    92
    • 4. April 2007 um 21:40
    • #3

    Hmmm ... interessant ... dachte das sie wenn sie im Main definiert werden fürs ganze Main bleiben. Wieder was gelernt.
    Wie geht man in so einem Fall vor? Wahrscheinlich setzt man das ganze total anders mit Hilfe von Objekten um, oder?

    lg Stefan

  • freudi
    Punkte
    15
    Beiträge
    2
    • 5. April 2007 um 03:22
    • #4
    Java
    [align=left]import java.util.Scanner;[/align]
     
     
    [align=left]public class RandomNumbers {[/align]
     
    [align=left]public static int rnd(int low,int high) {
     return low + (int) (Math.random()* (high - low));
    }[/align]
     
    [align=left]public static double rnd(double low,double high) {
     return low + Math.random() * (high - low);
    }[/align]
     
    [align=left]public static void main(String[] args) {
     Scanner sc = new Scanner(System.in);
     System.out.print("Wieviele Zufallszahlen sollen ausgegeben werden? ");
     int count = sc.nextInt();
     System.out.println("Sollen Integer oder Double ausgegeben werden (I/D)?)");
     if (sc.next().equals("I")) {
         System.out.print("Was soll die Untergrenze der Zufallszahlen sein? ");
         int low = sc.nextInt();
         System.out.print("Was soll die Obergrenze der Zufallszahlen sein? ");
         int high = sc.nextInt();
         for (int i = 1; i <= count; i++) {
              System.out.println(rnd(low,high)); //hier erkennt er low & high nicht
          }
     }
     else {
         System.out.print("Was soll die Untergrenze der Zufallszahlen sein? ");
         double low = sc.nextDouble();
         System.out.print("Was soll die Obergrenze der Zufallszahlen sein? ");
         double high = sc.nextDouble();
         for (int i = 1; i <= count; i++) {
             System.out.println(rnd(low,high)); //hier erkennt er low & high nicht
         }
     }
    }
    }[/align]
    Alles anzeigen



    Die Lösung ist sicherlich nicht die Beste aba auf die Schnelle fällt mir nix besseres ein.

    mfg

  • gelbasack
    Punkte
    6.525
    Beiträge
    1.241
    • 5. April 2007 um 07:33
    • #5

    Ganz allgemein bei so einem Problem:
    Du kannst am Anfang der main()-Methode die Variablen anlegen mit

    Code
    int low, high;


    In deinem if-Statement weist du ihnen nur Werte zu

    Code
    low = sc.next.....


    Dann sind die Variablen in der ganzen main()-Methode gültig, die Werte weist du aber weiterhin an der gleichen Stelle zu.

    PS: Und du bist nicht zufällig der Horrendus aus einem MUD? ;)

  • samyjr
    Punkte
    609
    Beiträge
    117
    • 5. April 2007 um 10:08
    • #6

    du solltest vielleicht dir auch mal was ansehen über membervariablen (variablen die in der ganzen klasse sichtbar sind). Die sind nämlich ein grundstein des OOP bzw. wennst ihre sichtbarkeiten noch dazu angibst und setter & getter methoden verwendest.

  • Horrendus
    Punkte
    520
    Beiträge
    92
    • 5. April 2007 um 11:28
    • #7
    Zitat von gelbasack

    Ganz allgemein bei so einem Problem:
    Du kannst am Anfang der main()-Methode die Variablen anlegen mit

    Code
    int low, high;


    In deinem if-Statement weist du ihnen nur Werte zu

    Code
    low = sc.next.....


    Dann sind die Variablen in der ganzen main()-Methode gültig, die Werte weist du aber weiterhin an der gleichen Stelle zu.

    PS: Und du bist nicht zufällig der Horrendus aus einem MUD? ;)

    Also zuerst mal zu dem PS ... ja bin ich ... höchstwahrscheinlich ... nur noch die Frage wer du bist ;)

    Ist klar das ich am Anfang der Main Methode das anlegen könnte, aber ich weiss ja noch nicht sicher ob ich integer will oder double ;)

    Ich hab jetzt einfach mal die Schleife in den void rnd gelegt. Membervariablen und getter, setter Methoden schau ich mir sicherlich noch an, aber ich geh halt mal das Buch (How to think like a computer scientist - java version) von vorn bis hinten durch, mach ein paar Beispiele u.s.w.

    lg Stefan

  • gelbasack
    Punkte
    6.525
    Beiträge
    1.241
    • 5. April 2007 um 12:36
    • #8
    Zitat von Horrendus

    Also zuerst mal zu dem PS ... ja bin ich ... höchstwahrscheinlich ... nur noch die Frage wer du bist ;)

    Znarf.

    Zitat

    Ist klar das ich am Anfang der Main Methode das anlegen könnte, aber ich weiss ja noch nicht sicher ob ich integer will oder double ;)


    Sorry, war allgemein gemeint für solche Probleme.

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum