我正处于Java课程的开始阶段。最后的任务是创建一个Hangman游戏。规则:用星号替换隐藏的单词,然后用户有10次尝试猜测单词。每次正确的猜测,我们需要替换星号,因此它看起来像这个d * n **。
我在创建一个检查字符串的字符串的循环时出错,然后用正确的字母替换字符串。我应该使用String,char []数组或String []数组吗?任何指导都会受到很多赞赏。
lon=34.4
lat=22.1
cdo daymean -remapnn,lon=${lon}/lat=${lat} input.nc output_${lon}_${lat}.nc
答案 0 :(得分:-1)
最初,它会出现如下所示的问题:
else if (!(chars[i] == letterTrim))
这是一个问题,原因有两个:
这里有更好的东西,比如
for (int i = 0; i < chars.length; i++) {
String letter = Character.toString(chars[i]);
if (letter.equals(letterTrim)) {
...
} else if (!letter.equals(letterTrim)) {
...
}
}
在上面的代码中,Character值被转换为String,允许您将letter的值与letterTrim的值进行比较。
在Java中,字符串是对象,需要使用.equals()方法来计算相等性而不是==运算符。一个例外是检查String是否为null。然后你需要像这样使用==运算符:
String name = null;
if ( name == null ) {
System.out.println("variable name is null.");
}
我还应该补充一点,如果它是完全相同的对象引用,则使用对象断言的==运算符,并且使用赋值运算符=将复制对象引用而不是整个对象。举个例子:
String lastName = "Doe";
String otherLastName = lastName;
if ( lastName == otherLastName ) {
System.out.println("lastName and otherLastName reference the same object");
}
希望有所帮助!
更多信息
评论中指出了以下例子:
String name = "Mike";
if ( name == "Mike" ) {
System.out.println("Same object reference");
}
这将在if语句中打印该行。这是因为引用了相同的对象。也就是说&#34; Mike&#34;是与变量 name 相同的对象的引用。创建一个字符串对象,并将其引用分配给该行上的变量 name :
String name = "Mike";
但是,以下内容将创建一个新的String对象:
String name = "Mike";
String otherName = new String("Mike");
if ( name != otherName ) {
System.out.println("Different Objects");
}
if ( name == "Mike" ) {
System.out.println("\"Mike\" is the same Object reference as name.");
}
if ( name.equals(otherName) ) {
System.out.println("The contents of name and otherName are equal");
}
上面会产生不同的对象&#39;&#39;&#34;迈克&#34;是与名称&#39;相同的对象引用,&#39; name和otherName的内容相等&#39;。构造函数的使用将产生(如预期的那样)一个新的String对象,尽管它的内容是相同的。这就是使用.equals()方法非常重要的原因。