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}
übungsbsp Klasse Temperatur -> ausgabe von array geht nicht
-
- Frage
-
@xid -
25. April 2004 um 17:43
-
-
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 -
... code posten is ja nicht so einfach ... hmmm ..
HINT:
{code}.....{/code} <-- _HIER_ die klammern {} durch [] ersetzen nicht in deinem code -
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 drinnenhmm, 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
Alles anzeigenimport 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; } }
-
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!