übungsbsp Klasse Temperatur -> ausgabe von array geht nicht

  • 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 :(

    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) || (anz == -999) || (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) || (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}

  • 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

  • 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

  • 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 :(

    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:

  • 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

Jetzt mitmachen!

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