Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen

BadNet

Mitglied
Hallo zusammen

Ich habe die String Datenfelder field1 bis field9. Möchte diese Felder in einer for Schleife aus dem String "field" und der inkrementierenden Zahl int i (0 - 9) zusammenfügen und dann auf die neue konkatenierten String die Methode .equals() aufrufen. Wie mache ich das? Folgend mein Versuch:

Ziel ist es die auskommentiereten "If Abfragen" zu ersetzen. Leider ist es mir nicht erlaubt ArrayList zu verwenden, was das ganze wahrscheinlich einfacher machen würde.

Vielen Dank für die Hilfe.

public void makeTurn() {

input = Main.playerInput();
String field = null;
fieldIsOccupied(input);
for(int i = 0; i < 10; i++)
{field = "field" + i;
if (input == i && field.equals(""))
{field = setXorO();
setCurrentPlayer();}
}
// if (input == 1 && field1.equals("")) {
// field1 = setXorO();
// setCurrentPlayer();
// }
// if (input == 2 && field2.equals("")) {
// field2 = setXorO();
// setCurrentPlayer();
// }
// if (input == 3 && field3.equals("")) {
// field3 = setXorO();
// setCurrentPlayer();
// }
// if (input == 4 && field4.equals("")) {
// field4 = setXorO();
// setCurrentPlayer();
// }
// if (input == 5 && field5.equals("")) {
// field5 = setXorO();
// setCurrentPlayer();
// }
// if (input == 6 && field6.equals("")) {
// field6 = setXorO();
// setCurrentPlayer();
// }
// if (input == 7 && field7.equals("")) {
// field7 = setXorO();
// setCurrentPlayer();
// }
// if (input == 8 && field8.equals("")) {
// field8 = setXorO();
// setCurrentPlayer();
// }
// if (input == 9 && field9.equals("")) {
// field9 = setXorO();
// setCurrentPlayer();
// }
if (IsThereWinner())
System.out.println("Gewinner ist: " + WhoIsWinner());
}
 
Also Variablen field1 bis field9 sind schon etwas unglücklich. Da sollte statt dessen ein Array verwendet werden. Dann kann man so Code vereinfachen, denn man kann ja direkt field[input]=setXorO(); aufrufen.

Und noch eine kleine Bitte: Code bitte über Code-Tags posten. Das geht ganz einfach über den </> Knopf links oberhalb des Eingabebereichs.

Edit: Bei dem Code hat sich auf die schnelle ein Fehler eingeschlichen. Bei Arrays wäre der Index von 0 bis 8. Bei Eingabe von 1 bis 9 muss man natürlich die Eingabe um eins reduzieren: field[input-1]=setXorO();
 
Konkatenieren von Strings geht mit +.

Es wäre aber besser, den String mit Leerstring, statt mit null zu initialisieren.

Der Variablen-Name field für den String ist komisch.
 
Konkatenieren von Strings geht mit +.

Es wäre aber besser, den String mit Leerstring, statt mit null zu initialisieren.

Der Variablen-Name field für den String ist komisch.
Ja, aber ich benötige keinen String. Ich möchte aus einem String "field" und einem int "i" den ich inkrementiere die Variable vom Typ String field1 bis field9 erstellen. Damit ich dann auf den Inhalt der Variable field1 bis 9 zugreifen kann.
 
Also Variablen field1 bis field9 sind schon etwas unglücklich. Da sollte statt dessen ein Array verwendet werden. Dann kann man so Code vereinfachen, denn man kann ja direkt field[input]=setXorO(); aufrufen.

Und noch eine kleine Bitte: Code bitte über Code-Tags posten. Das geht ganz einfach über den </> Knopf links oberhalb des Eingabebereichs.

Edit: Bei dem Code hat sich auf die schnelle ein Fehler eingeschlichen. Bei Arrays wäre der Index von 0 bis 8. Bei Eingabe von 1 bis 9 muss man natürlich die Eingabe um eins reduzieren: field[input-1]=setXorO();
Danke, aber es ist eine Schulaufgabe und ich darf Array nicht verwenden 🙁
 
Danke, aber es ist eine Schulaufgabe und ich darf Array nicht verwenden 🙁
Was ist bitte die genaue Aufgabe? So wie Du das hier gezeigt hast, macht es nicht wirklich Sinn.

Statt einem Array kann man eine eigene Datenstruktur aufbauen In einer Map könnte man halt auch sogenannte Key - Value Paare speichern um dann über den Key auf Werte zuzugreifen.

Eine letzte Option wäre, über Reflection auf Instanz- oder Klassenvariablen zuzureifen. Da würde man auch den Namen verwenden. (Aber das ist in so einem Zusammenhang absoluter Unsinn!)

Und wo wir schon so am rumspinnen sind: Mach die Felder in eine Enum. Dann kannst Du auch durch iterieren und gezielt auf Elemente zugreifen.

Aber all diese Ideen sind entweder relativer Quatsch (Reflection und Enum) oder bestimmt nicht im Sinne der Aufgabe (Map). Daher: Gib den genauen Wortlaut der Aufgabe, denn ich glaube, dass Du die nicht gut genug präsentiert hast.
 

Neue Themen


Zurück
Oben