For-Schleife durch zwei versch. Variablen begrenzen

marcels87

Mitglied
Hallo zusammen,
ich habe eine Frage zum Aufbau der for-Schleife.
Ich habe zwei verschiedene eingelesene Variablen, die den Grenzwert der for schleife setzen sollen.
int x_links;
int x_rechts;
Andere Variablen sind:
double a; // ein Wert für das Polynom
double b;
double c;
double x;
int k;
double y;

Alle Variablen bis auf y werden eingelesen.
Der Nutzer gibt zum Beispiel ein: X_links = 2 und x_rechts = 8.

Ich denke, die for-Schleife müsste ungefähr so aussehen:

Java:
for (int i;i>=x_links && i<=x_rechts; i++) {
        y= a*Math.pow(x,2)+b*x+c;

System.out.println("f(i)" +y);

       }

Ich bekomme immer wider neue Fehlermeldungen, dass meine Variablen nicht initialisiert sind. Sie sind doch durch meine Nennung bereits initialisiert, oder mache ich da einen Denkfehler?
 
Zuletzt bearbeitet:
Bitte den Code in Code-Tabs setzen [code=Java]Dein Code[/code]
Java:
int i = 2;
int j = 6;
for(int x = i; x < j; x++)
{
   //Code
}
 
Dann mal eine Frage dazu. Warum wird x=0 angegeben? Ich dachte dass wäre der minimale Startpunkt und da ich als Startpunkt x_links habe, dachte ich dass die 0 überflüssig ist.
Wenn das Problem gelöst ist, gibt er den selben Fehler bzgl. x aus. x habe ich aber bereits am Anfang der main-funktion deklariert.
 
Es geht bei dem Programm um die Funktionswerte einer quadratischen Gleichung. Als erstes lese ich alle Werte über einen Scanner ein. Die Funktion ist ax^2 +bx+c. Ich lese die Werte für a,b,c und die Grenzwerte x_links und x_rechts ein. Da das eine Aufgabe ist die ich später abgeben soll, möchte ich nicht den ganzen Code posten, sonst heisst es nachher vielleicht, dass ich den ganzen Code aus dem Internet kopiert habe.
 
@marcels87
Worauf ich hinaus will: man muss die Werte vor der Schleife initialisieren, denn sonst sind diese Null und dann meckert die Maschine.

Dazu musst du natürlich die Variablen in der Schleife anpassen.
Dein Code bissle überarbeitet: (Traumwerte zugewiesen)
Java:
int x_links = 2;
int x_rechts = 6;
double a = 10;
double b = 2;
double c = 7;
double x = 5; //per Scanner Werte zuweisen(Benutzereingabe)
int k;
double y; 

for (int i = x_links; i >= x_links && i <= x_rechts; i++) {
     y = a * Math.pow(x, 2) + b * x + c; 
     System.out.println("f(i)" + y);
}
int i = x_links
 
Dachte immer, dass eine deklarierte, aber nicht initialisierte Variable
den default-Wert einnimmt? Also int a; (0) boolean f;(false)
oder heißt es undefiniert?
Für Instanzattribute gilt das - die bekommen jeweil den entsprechenden default-Wert.
Für normale Variablen gilt das aber nicht, deshalb müssen sie auch initialisiert werden, sonst compilierts nicht - die haben eben keinen Wert, auch nicht den Defaultwert (was für Referenzen ja null wäre).
 
Was ist denn verwirrend?
Nichts, wenn man noch mal nachliest. Du hast Recht.
Für den Moment hatte ich es nicht mehr so genau in Erinnerung.
Java ist auch eine Insel hat gesagt.:
Die Laufzeitumgebung – bzw. der Compiler – initialisiert lokale Variablen nicht automatisch mit einem Nullwert bzw. Wahrheitsvarianten nicht mit false. Vor dem Lesen müssen
lokale Variablen von Hand initialisiert werden, andernfalls gibt der Compiler eine Fehlermeldung aus.
...
Anders ist das bei Objektvariablen (und statischen Variablen sowie Feldern). Sie sind standardmäßig mit null (Referenzen), 0 (bei Zahlen) oder false belegt
 
Das Programm macht jetzt was es soll. Ich muss es nur noch um eine Sache modifizieren, nämlich Stützpunkte. Man könnte sie auch einfach als Messpunkte bezeichnen.
Nehmen wir an dass x_links 1 und x_links 5 ist, dann durchläuft die Schleife die Punkte x=1,2,3,4 und 5. Jetzt soll ich allerdings eine Variable einfügen, die die Anzahl der durchlaufenen Punkte bestimmt. Das kann soweit ich weiss mehr oder auch weniger Punkte bedeuten.
Gibt es eine Möglichkeit, die for-Schleife nicht nur über ganze Zahlen durchlaufen zu lassen?

Wenn ich zum Beispiel sage, dass die neue Variable k = 10 ist, die Grenzwerte aber immer noch 1 und 5 sind, dann müssen zwischen 1 und 5 zehn weitere Messungen stattfinden, die natürlich keine ganzen Zahlen ergeben können.
 
Ich muss die Frage anders stellen. Ich weiss dass ich alle Integer durch double ersetzen kann und die Schleife trotzdem läuft. Die Frage ist wie ich die Variable in die Schleife integriere. Ich habe gerade versucht, i++ durch die neue Variable k++ zu ersetzen, das ergab allerdings eine Endlosschleife.
 
Tipp: 😉
Java:
Zahl: 0,000000
Zahl: 0,100000
Zahl: 0,200000
Zahl: 0,300000
Zahl: 0,400000
Zahl: 0,500000
Zahl: 0,600000
Zahl: 0,700000
Zahl: 0,800000
Zahl: 0,900000
Zahl: 1,000000
 
Nach einigen Versuchen ist es so, dass die Schrittweite sich ändert, aber das Ergebnis ist nicht das was ich haben möchte.
Wenn k=20 ist, dann springt die Schleife von eins zu 21. Deshalb gibt das Programm nur ein Ergebnis aus. Es soll aber 20 Ergebnisse zwischen 1 und 5 ausgeben. K soll nicht die Schrittweite sondern die Anzahl der benötigten Schritte sein.

Ich habe diverse Kombinationen von Operatoren probiert aber das Ergebnis ist nicht richtig.
 
Schon gut, ich habs. (Hohe Grenze- niedrige Grenze)/k.
Edit: Es ist bloss eine Messung zu wenig. Wenn ich 3 eingebe dann sollen es 5 Messungen sein. Die Grenzwerte plus drei weitere dazwischen. Er gibt nur vier aus.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben