Ei toimi vaikka pitäisi

Moi!

Tässä koodissa on if-lauseke jossa on currentLevel[y][x] == "S" mutta se ei toimi vaikka sen pitäisi. Testasin myös currentLevel[1][1] jossa "S" sijaitsee mutta ei toimi silti. Eli "if" ei toimi vaikka pitäisi toimia. Koodi:
for (int y = 0; y < 15; y ) {
for (int x = 0; x < 20; x ) {
if(inFile.hasNext()) {
line = inFile.next();
currentLevel[y][x] = line;
//Nämä if eivät toimi vaikka tuolla arrayssa on S.. Testasin myös laittaa tohon suoraan currentLevel[1][1] jossa S on...
if(currentLevel[y][x] == "S") {
System.out.println("Tää toimii!");
PlayerX = x * 35;
PlayerY = y * 35;
PlayerMoveY = y;
PlayerMoveX = x;
} else if(currentLevel[y][x] == "F") {
MoneyInLevel ;
} else if(currentLevel[y][x] == "E") {
LevelFinishX = x * 35;
LevelFinishY = y * 35;
}
}
}
}
Ilmianna
Jaa

7 Vastausta



Kokeile .equals()
Ilmianna
Jaa
Onko S merkkijono vai merkki?
0x53,0x00 != 0x53
Eli pitäisikö verrata 'S' ?
http://docs.oracle.com/javase/tutorial/java/data/characters.html
Ilmianna
Jaa
Vosiko olla Joku ylimääräinen merkki esim '\n' perässä. trim ja sitten vertailu
Ilmianna
Jaa
Katso linen sisältö inFile.next():n jälkeen.
Ilmianna
Jaa
Merkkijonoa verrataan .equals() tai .matches()
Ilmianna
Jaa
String-luokassa on myös equalsIgnoreCase, joka jättää isot ja pienet kirjaimet huomiotta, sama kumpi on. Lisäksi esimerkissäsi et kasvata for-silmukoissa x:n ja y:n arvoja jostain syystä. Käy koko matriisi läpi. Ja tarkista, että currentLevel on String-taulukko. Alustuksen pitäisi olla tämä: String[][] currentLevel = new String[15][20];

Lisäksi oletko sijoittanut hakemaasi matriisin alkioon jonkin merkkijonon, vai tuleeko NullPointerException. Debuggaa koodi, ja tarkista arvot joka kierroksella. Kyllä se ratkeaa siitä.
Ilmianna
Jaa
Pitää suurentaa muuttujia joka kierroksella x++ ja y++.
Ilmianna
Jaa

Vastaa alkuperäiseen viestiin

Ei toimi vaikka pitäisi

Moi!

Tässä koodissa on if-lauseke jossa on currentLevel[y][x] == "S" mutta se ei toimi vaikka sen pitäisi. Testasin myös currentLevel[1][1] jossa "S" sijaitsee mutta ei toimi silti. Eli "if" ei toimi vaikka pitäisi toimia. Koodi:
for (int y = 0; y < 15; y ) {
for (int x = 0; x < 20; x ) {
if(inFile.hasNext()) {
line = inFile.next();
currentLevel[y][x] = line;
//Nämä if eivät toimi vaikka tuolla arrayssa on S.. Testasin myös laittaa tohon suoraan currentLevel[1][1] jossa S on...
if(currentLevel[y][x] == "S") {
System.out.println("Tää toimii!");
PlayerX = x * 35;
PlayerY = y * 35;
PlayerMoveY = y;
PlayerMoveX = x;
} else if(currentLevel[y][x] == "F") {
MoneyInLevel ;
} else if(currentLevel[y][x] == "E") {
LevelFinishX = x * 35;
LevelFinishY = y * 35;
}
}
}
}

5000 merkkiä jäljellä

Peruuta