如果在java中语句为true时循环代码没有执行

时间:2015-12-03 04:08:05

标签: java android if-statement

我对发生的事情感到困惑。我有一个Android的Java应用程序,我遇到一个if语句的问题。 if语句位于for循环中,循环遍历我之前在代码中创建的对象的ArrayList。每个对象都有一个类型变量,它是一个字符串和一个访问变量的方法。在for循环中,我打印出每个对象的变量以检查它是什么,并打印出“0”作为字符串。然后我用if语句中的if语句检查它,用于循环声明,if b.getType() == "0",虽然我知道肯定100%该语句是真的,但它不会运行代码,因为事实是如果它运行代码,我打印出“true”这个词。我不知道发生了什么。

  public Level(String level, Bitmap[] images){
    String[] types = level.split(" ");
    this.images = images;
    int x = 60;
    int y = 48;
    for(int i = 0; i < 276; i++){ //creates new block objects based on the text file
        blocks.add(new Block(x, y, types[i]));
        x += 32;
        if(x >= 796){
            x = 60;
            y += 32;
        }
    }
}

这是我初始化对象的地方,将类型的字符串值传递给块对象。

 public void draw(Canvas canvas){
    for(Block b: blocks){ //loops through the blocks and draws them to the canvas
        System.out.println(b.getType());
       if(b.getType() == "1"){
           System.out.println("true");
           canvas.drawBitmap(images[1], b.getX(), b.getY(), null);
       }
    }
}

这是正在运行的代码块,这给我带来了很多麻烦。

public class Block {

private int x;
private int y;
private String type;

public Block(int x, int y, String type){
    this.x = x;
    this.y = y;
    this.type = type;
}


public int getX(){
    return x;
}

public int getY(){
    return y;
}

public String getType(){
    return type;
}

}

I/System.out﹕ 0

这是存储类型的块类。 以下是System.out.println(b.getType());中所述的内容 很多帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

==比较指向字符串的指针,而不是字符串本身。使用equals

"0".equals(b.getType())

答案 1 :(得分:0)

==验证参考相等。

.equals()验证值相等

将代码更改为以下,

b.getType().equals("0")

String#equals