Code vereinfachen mit Schleife, aber wie genau?

kuzdu

Aktives Mitglied
Hallo Leute,

ich habe ein Haufen von TextViews, denen die Wochentage entsprechend zugeordnet werden.

Folgender Code funktioniert, ist aber wie ich finde viel zu lang und sieht obendrein auch hässlich aus.



Java:
 public void Tagesberechnung(int i) {

String[] test = {"Mo","Di","Mi","Do","Fr","Sa","So"};
    	
   
    	if(i == 7) {
    		i = 0;
    	}
    	day2.setText(test[i]);
    	i++;
    	if(i == 7) {
    		i = 0;
    	}
    	day3.setText(test[i]);
    	i++;
    	if(i == 7) {
    		i = 0;
    	}
       //theoretisch usw. bis day31

}

Nun ich wollte daraus eine Schleife machen, nur ich weiß nicht wie ich das "dayX" dynamisch machen kann.

á la:
Java:
for(int a =0; a < 32; a++)
{
if(i == 7) {
    		i = 0;
    	}
day+"a"+.setText(test[i]);

i++;
}

Das funktioniert nicht. Habe auch mal Zahlen in ein Array gepackt und es so ähnlich versucht:
day[array].setText(test);

Aber das funktioniert auch nicht.
Wie die genauen Fehlermeldungen lauten, weiß ich gerade nicht mehr, es war glaube ich einfach ungültige Syntax.

Alternativ dachte ich mir die If-Abfrage auszulagern, so dass mein Code "nur" so aussieht:

Java:
 public void Tagesberechnung(int i) {

String[] test = {"Mo","Di","Mi","Do","Fr","Sa","So"};
    	
   
        i = ifAbfrage();
    	day2.setText(test[i]);
    	i++;
    	i = ifAbfrage();
    	day3.setText(test[i]);
    	i++;
    	i = ifAbfrage();
        day4.setText(test[i]);
    	i++;

public int IfAbfrage(int i) {

if(i == 7) {
    		i = 0;
    	}


return i;
}

Das geht aber auch nicht. Das i wird nicht überschrieben, zählt iwann bis 8 und das verträgt sich nicht mit dem Array.


Ich weiß auch nicht, habe iwie ein Brett vor dem Kopf, weil das Problem "eigentlich" nicht schwer sein sollte und nicht schwer wirkt, nur ich kriege es nicht hin.:bahnhof:


Hoffe hier kann mir einer helfen🙂

Grüße
 
Hi kuzdu

Ich würde die Objekte day die Du erstellst in ein Array geben, wenn es eine fixe Anzahl von Objekte gibt.

Java:
dayFeld[0] = new day(parameter);
dayFeld[1] = new day(parameter);
...

dayFeld[0].setText(test[i]);

Wenn die Anzahl der day Objekte dynamisch ist, ist List zu verwenden.

Pentalon
 
Auf Pentalons Idee aufbauend, würde ich das ungefähr so lösen (Skizze):
Java:
private static final String[] test = {"Mo","Di","Mi","Do","Fr","Sa","So"};

public void Tagesberechnung(int startwochentag) { // 0 -> Mo, 1 -> Di usw.
	for(int i = 0; i < 31; i++){ // nicht jeder Monat hat 31 Tage!
		dayFeld[i].setText(test[(startwochentag + i) % 7]);
	}
}
Ark
 

Zurück
Oben