我对发生的事情感到困惑。我有一个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());
中所述的内容
很多帮助将不胜感激。
答案 0 :(得分:1)
==
比较指向字符串的指针,而不是字符串本身。使用equals
:
"0".equals(b.getType())
答案 1 :(得分:0)