Java:if/else语句没有执行,布尔逻辑变量可能出现问题?

Kin*_*mph 0 java arrays if-statement

可能重复:
Java字符串比较?

我对Java很新,并对我的if/else语句无法执行的原因有疑问.该方法的目标是基于从文本文件读入的符号加载2D阵列.符号将转换为数字以填充数组.据我所知,用于确定if或if/else语句是否应该执行的布尔逻辑是合理的,但它们都没有.谢谢您的帮助.

码:

public void loadText(Scanner sc) { 

   for (int row = 1; row <= grid.length; row++) {

       for (int col = 1; col <= grid[row].length; col++) {

           String x = sc.next();

           if ((x  == " ") && (row <= 10)) {
              grid[row][col] = 0;
           } else if ((x == "*") && (row <= 10)) {
               grid[row][col] = 1;         
           } else if ((x == "$") && (row <= 10)) {
               Arrays.fill(grid[row], 0);
           } else if (row >= 11) {
               break;
           }
       }
Run Code Online (Sandbox Code Playgroud)

mre*_*mre 7

使用.equals或比较字符串.equalsIgnoreCase.


tar*_*tak 6

比较字符串时使用是一种很好的做法

" ".equals(x) in stead of x == " "
Run Code Online (Sandbox Code Playgroud)


bra*_*ain 5

对于字符串比较代码,您需要将==替换为.equals(),例如

if (" ".equals(x) && (row <=10)) {

}
Run Code Online (Sandbox Code Playgroud)

==检查两个对象是否是同一个对象,equals()方法检查它们是否代表相同的东西.在Java中,equals()可以被类重写以执行正确的操作,但==不能.