1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Variablen werden von Schleife nicht erkannt

  • Horrendus
  • 4. April 2007 um 17:08
  • Unerledigt
  • Horrendus
    7
    Horrendus
    Mitglied
    Punkte
    520
    Beiträge
    92
    • 4. April 2007 um 17:08
    • #1

    Hallo Leute,

    und wiedermal stecke ich in meinem Java Selbsstudium fest :winking_face:

    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
    1
    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
    7
    Horrendus
    Mitglied
    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
    2
    freudi
    Mitglied
    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
    25
    gelbasack
    Mitglied
    Reaktionen
    90
    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? :winking_face:

  • samyjr
    8
    samyjr
    Mitglied
    Reaktionen
    4
    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
    7
    Horrendus
    Mitglied
    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? :winking_face:

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

    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 :winking_face:

    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
    25
    gelbasack
    Mitglied
    Reaktionen
    90
    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 :winking_face:

    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 :winking_face:


    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.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung