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
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

übungsbsp Klasse Temperatur -> ausgabe von array geht nicht

    • Frage
  • @xid
  • 25. April 2004 um 17:43
  • Unerledigt
  • @xid
    3
    @xid
    Mitglied
    Punkte
    50
    Beiträge
    6
    • 25. April 2004 um 17:43
    • #1

    also ich beschreib mal mein problem:
    wenn ich die methode Temperatur(anz,von) starte und dann durchlaufen lasse mit anz = 50 von = -444 gibt es mir 0 aus. wenn ich es aber debuge, dann steht im temp[i] immer ein gültiger wert drinnen :frowning_face:

    bitte bei methode Temperatur(int anz,int von) schaun

    anbei das problem:

    {code}

    import java.lang.Math;

    public class Temperatur
    [
    private int[] temp;

    public Temperatur()
    [
    temp = new int[100];
    ]

    public void Temperatur(int anz) //zufallszahlen von -50 bis 50
    [
    int i = 0;
    int zaehler = 0;

    if((anz > 100) :tired_face: (anz == -999) :tired_face: (anz == 0))
    [
    anz=10;
    ]

    while(zaehler < anz)
    [
    temp[i]=(int)((Math.random()*100)-50); //von 0,5*50 ect
    zaehler++;
    System.out.println(temp[i]);
    i++;
    ]
    System.out.println("das war" + i);
    ]

    public void Temperatur(int anz, int von)
    [
    int i = 0;
    int zaehler = 0;

    anz = anzeigenTest(anz); //geh zur methode um anz zu prüfen

    while(zaehler < anz) //mit überprüfung wertebereich von -999 bis +50
    [
    temp[i]=(int)((Math.random()*999)-(Math.random()*999));

    if((temp[i] < 50) && (temp[i] != 0) && (temp[i] >= von))
    [
    i++;
    zaehler++;
    System.out.println(temp[i]);
    ]
    ]
    System.out.println("das war" + i);
    ]

    public int anzeigenTest(int anz) //statt andauernd eine überprüfung zu machen ->methode
    [
    if((anz == 0) :tired_face: (anz == -999) ||(anz > 100) ||(anz < -999))
    [
    anz = 10;
    ]
    return anz;
    ]


    public int wertebereich(int i)
    [
    if(!(i <=50) && (i >=-50) && (i != 0))
    [
    System.out.println('error');
    i=1;
    ]
    return i;
    ]
    ]

    {/code}

  • Zentor
    16
    Zentor
    Mitglied
    Reaktionen
    5
    Punkte
    2.710
    Beiträge
    506
    • 25. April 2004 um 19:06
    • #2

    Entschuldige, aber dein Programm ist in vielerlei Hinsicht einfach nur schrecklich... :) Fast jede Zeile ist redundant.
    Du solltest nochmal komplett neu anfangen, dann fällt das debuggen leichter und Fehler tauchen erst garnicht auf.
    mfg Zentor

  • davewood
    17
    davewood
    Mitglied
    Reaktionen
    9
    Punkte
    3.204
    Beiträge
    536
    • 25. April 2004 um 19:53
    • #3

    verwende ausserdem die tags {code}.....{/code}

    und ersetz die geschwungenen Klammern {} durch eckige []

    zB;

    Code
    cout << "blubb!"

    I like Toast!

  • @xid
    3
    @xid
    Mitglied
    Punkte
    50
    Beiträge
    6
    • 25. April 2004 um 20:31
    • #4
    Zitat von Zentor

    Entschuldige, aber dein Programm ist in vielerlei Hinsicht einfach nur schrecklich... :) Fast jede Zeile ist redundant.
    Du solltest nochmal komplett neu anfangen, dann fällt das debuggen leichter und Fehler tauchen erst garnicht auf.
    mfg Zentor


    wie meinst du in vielerlei Hinsicht schrecklich?
    Meinst du das ich es nicht formatiert hab oder wie?
    Das ist erst mein zweites Semester Java - da kann man ja no ned so viel

    aber ich würd gern wissn wie du das gmeinst hast thx

  • Marc_enaweg
    9
    Marc_enaweg
    Mitglied
    Reaktionen
    1
    Punkte
    771
    Beiträge
    147
    • 26. April 2004 um 00:22
    • #5

    :grinning_squinting_face: ... code posten is ja nicht so einfach ... hmmm .. :face_with_rolling_eyes:

    HINT:
    {code}.....{/code} <-- _HIER_ die klammern {} durch [] ersetzen nicht in deinem code :winking_face:

    [Enaweg]

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 26. April 2004 um 04:44
    • #6
    Zitat von @xid

    also ich beschreib mal mein problem:
    wenn ich die methode Temperatur(anz,von) starte und dann durchlaufen lasse mit anz = 50 von = -444 gibt es mir 0 aus. wenn ich es aber debuge, dann steht im temp[i] immer ein gültiger wert drinnen :frowning_face:

    hmm, die angabe sieht mir nach spengergasse, Behringer aus ?

    zu deiner frage:

    in der funktion Temperatur(int,int) erhöhst du _erst_ den index des arrays, und gibst _dann_ den wert des arrays an dieser stelle aus. Das ist also der wert _nach_ dem zuletzt beschriebenen. Und das ist 0, da die elemente eines arrays immer mit dem default wert initialisiert werden, und das ist bei einem integer 0. wenn du i++ hinter den print befehl setzt, bekommst du die richtigen werte.

    ansonsten ist dein code wirklich unleserlich, redundant und alles andere als modular. Für einen Einsteiger nicht ungewöhnlich, aber ich würde Dir empfehlen, viel programmcode von anderen Programmierern zu studieren (aus büchern oder open source programmen oder von kollegen), weil sich das allein durch selbst programmieren nicht bessert.

    Zur Verwirrung führen zum Beispiel schon die Bezeichnungen deiner Klasse und Methoden:

    Deine Klasse heisst 'Temperatur', aber eine Temperatur besitzt sicher keine Liste von Temperaturwerten. Und Du hast eine Methode, die _auch_ Temperatur heisst. Nicht nur das es verwirrend ist, weil jeder erstmal denkt das ist ein Konstruktor. Eine Methode sollte auch immer, wie der Name schon andeutet, die darin enthaltene action beschreiben. Also z.B 'addRandomTemparatureValues' oder sowas.
    Methoden beginnen laut Convention übrigens mit einem kleinbuchstaben (zumindest in Java).


    Ich habe deinen code nicht ganz gelesen und bin mir nicht sicher, was da eigentlich machen soll, trozdem hier eine Temperaturliste mit einer Methode, die sie mit zufallswerten füllt.

    vielleicht hilft dir das ja weiter:

    Java
    import java.util.Iterator;
    import java.util.Random;
    
    
    public class Test {
    	public static final int MAXIMUM = 50;
    	public static final int MINIMUM = -444;
    	public static final int NUMBER_OF_ELEMENTS = 50;
    
    
    	/*programmstart*/
    	public static void main(String[] args) {
    		TemperaturList tm = new TemperaturList();
    		tm.addRandomValues(NUMBER_OF_ELEMENTS, MINIMUM, MAXIMUM);
    
    
    		/*Ausgabe:*/
    		for (Iterator iter = tm.iterator(); iter.hasNext();) {
    			Temperatur temperatur = (Temperatur) iter.next();
    			System.out.println(temperatur.getValue());
    		}
    	}
    
    
    }
    
    
    /*liste f?r temperaturwerte:*/
    class TemperaturList extends java.util.ArrayList {
    
    
    	private Random rand = new Random(System.currentTimeMillis());
    
    
    	/**
    	 * f?ge 'anz' temperaturen mit werten zwischen 'minimum' und 'maximum' 
    	 * in die liste ein:
    	 * */
    	public void addRandomValues(int anz, int minimum, int maximum) {
    		for (int i = 0; i < anz; i++) {
    			int value =
    				rand.nextInt(Math.abs(maximum))
    					- rand.nextInt(Math.abs(minimum));
    			this.add(new Temperatur(value));
    		}
    	}
    }
    class Temperatur {
    	private int value;
    
    
    	public Temperatur(int value) {
    		this.value = value;
    	}
    
    
    	public int getValue() {
    		return this.value;
    	}
    
    
    	public void setValue(int value) {
    		this.value = value;
    	}
    
    
    }
    Alles anzeigen

    lg, Benjamin Ferrari, bookworm.at

  • Zentor
    16
    Zentor
    Mitglied
    Reaktionen
    5
    Punkte
    2.710
    Beiträge
    506
    • 26. April 2004 um 13:00
    • #7
    Zitat von @xid

    wie meinst du in vielerlei Hinsicht schrecklich?
    Meinst du das ich es nicht formatiert hab oder wie?
    Das ist erst mein zweites Semester Java - da kann man ja no ned so viel

    aber ich würd gern wissn wie du das gmeinst hast thx


    Einfach vom Programmfluss aus. Da sind Sachen drin.... Echt fürchterlich. Du solltest es halt nochmal schreiben und dann siehst du schon was ich meine.
    mfg Zentor

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    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

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern