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;
}
}
}
}
7245
Äänestä

Muut lukivat myös

Vastaukset 7

Vanhimmat

Kokeile .equals()

Äänestä

Vosiko olla Joku ylimääräinen merkki esim '\n' perässä. trim ja sitten vertailu

Äänestä

Katso linen sisältö inFile.next():n jälkeen.

Äänestä

Merkkijonoa verrataan .equals() tai .matches()

Äänestä

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ä.

Äänestä

Pitää suurentaa muuttujia joka kierroksella x ja y .

Äänestä

Kommentoi aloitusta


Maineri kirjoitti:

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;
}
}
}
}

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu