if语句中的Java数组未按预期运行

时间:2020-08-22 05:47:38

标签: java arrays

因此,我一直在编写游戏,并希望使代码库更有用。我最初写过以下代码一次,并且运行良好。但是为了重用和减少行数,我进行了调整。现在不起作用

主要Java文件:

builder.setStats("p, divine,0,1,2,2,1,2,4");

Builder文件:

String [] holder = new String[8];

public void setStats(String sentstats){
     holder = sentstats.split(",",8)

     if(holder[0]== "p"){
         charsheet.style = holder[1];
     }
}

因此,问题在于如果没有做出正确的回应。我已经测试了所有关联文件的完全访问权限。我知道我可以使它以其他方式工作。但是要减少冗余。并使部分代码递归,我已经做到了。

2 个答案:

答案 0 :(得分:0)

在使用String而不是字符时,请使用import sys sys.path.append('C:/Users/usrname/AppData/Local/Continuum/anaconda3/Library/bin/graphviz/') 而不是equals()

发件人:

==

,收件人:

 if(holder[0]== "p"){
     charsheet.style = holder[1];
 }

答案 1 :(得分:0)

Sting不是Java中的原始类型。它们被视为对象。当对对象使用==时,Java将检查两个对象在内存中是否具有相同的引用,而不是检查两个对象之间的值(或全局值的相似性)。这意味着Java不在乎字符串的值是什么。只要它们与内存中引用的对象不完全相同,Java就会返回false。因此,您应该使用equals()compareTo(),这两种方法实际上都检查字符串的值,而不是检查两个对象是否具有相同的引用。

方法1

if("p".equals(holder[0])){
    charsheet.style = holder[1];
}

方法2

METHOD 1

if("p".compareTo(holder[0]) == 0){ //compareTo returns 0 if both strings equal
    charsheet.style = holder[1];
}