我是java的初学者,正在尝试从头脑第一个java中解决这个代码难题,我解决了如下并得到正确的输出:D
class DrumKit
{
boolean topHat=true;
boolean snare=true;
void playSnare()
{
System.out.println("bang bang ba-bang");
}
void playTopHat()
{
System.out.println("ding ding da-ding");
}
}
public class DrumKitTestDriver
{
public static void main(String[] args)
{
DrumKit d =new DrumKit();
if(d.snare==true)
{
d.playSnare();
}
//d.snare=false;
d.playTopHat();
}
}
输出是::
bang bang ba-bang 丁丁达丁现在的问题是在那个代码拼图中留下了一个我没有包含的代码片段。如下所示
d.snare = FALSE;
即使我没有写它,我也得到了像书一样的输出。我想知道为什么我们需要将它的值设置为false,即使我们知道代码也会在没有它的情况下运行!??
我想知道编码员的想法是什么。我的意思是未来可能会有什么用途和背后的动机?
如果这是一个愚蠢的问题,我很抱歉。我只是想知道为什么或为什么不包括那个特定的陈述?它不像是一个循环或我们需要出来的东西。为什么那个声明在那里?
答案 0 :(得分:1)
可能只是为了演示如何更改公共成员变量。
答案 1 :(得分:0)
在哪里
d.snare=false;
如果它在if条件之前,那么它会通过影响类d中变量的状态来改变输出,它现在只是发布。
丁丁达丁 if条件将被绕过,但如果它在if条件之后,它将不会产生任何影响,因为它的值仅在if条件下计算。写在Main或班级内;
从您发布的代码中输出结果是正确的。
答案 2 :(得分:0)
我很确定没有理由改变变量/状态/无论之后是否确定都没有用过!
此致
答案 3 :(得分:-1)
你应该让DrumKit处理逻辑,让主类只对DrumKit进行设置。 像这样:
class DrumKit
{
boolean topHat=true;
boolean snare=true;
void playSnare() {
System.out.println("bang bang ba-bang");
}
void playTopHat() {
System.out.println("ding ding da-ding");
}
void play(){
if (snare){
playSnare();
}
if (topHat){
playTopHat();
}
}
}
public class DrumKitTestDriver {
public static void main(String[] args) {
DrumKit d =new DrumKit();
d.snare = false;
d.play();
}
}