我是Java的新手,但我对以下代码感到茫然。它没有打印出成本:
boolean Smart;
boolean Flat;
int smallsmart = 322;
int largesmart = 405;
void price(){
Scanner in = new Scanner(System.in);
System.out.printf("%nWhat Type of TV would you like Smart of Flat ??? ");//Prompts
boolean TV = in.next() != null;
System.out.println("What Size would you like 32 or 42 inch ?? ");//Prompts
int Size = in.nextInt();
if (TV = Smart && Size == 32){//start of if
System.out.println("The Price of your Tv is " + smallsmart);
} else if (TV = Smart & Size == 42){//start of if
System.out.println("The Price of your Tv is " + largesmart);
}
答案 0 :(得分:0)
Smart将为false(默认值为boolean)
在if和else条件中,你提到TV = Smart 对于这两种情况都是错误的。 这就是为什么它不打印任何东西。
请更正您的代码。电视== SMART
答案 1 :(得分:0)
您没有为Smart和Flat布尔值分配值。
1等号=
表示分配新值。
2等于符号意味着比较这两个值,
所以TV = Smart
实际上意味着您要将Smart
的值分配给TV
变量。
您应该将其更改为if (TV == Smart)
答案 2 :(得分:0)
in.next() != null
永远是真的
Smart
始终为false,因为它具有默认值
所以TV == Smart
也总是假的。
你想要
String TV = in.next();
// ...
if (TV == "Smart" && ...
或
boolean smart = in.next() == "Smart";
// ...
if (smart && ...
答案 3 :(得分:0)
boolean smart;
boolean flat;
int smallSmart = 322;
int largeSmart = 405;
void price(){
Scanner in = new Scanner(System.in);
System.out.println("What Type of TV would you like Smart of Flat ???");
String typeOfTv = in.nextLine().toLowerCase();
if(typeOfTv.equals("smart")) {
smart = true;
} else if(typeOfTv.equals("flat")) {
flat = true;
} else {
System.out.println("You have not selected an appropritate TV. Exiting...");
System.exit(0);
}
System.out.println("What Size would you like 32 or 42 inch ?? ");//Prompts
int size = in.nextInt();
if (smart && size == 32){//start of if
System.out.println("The Price of your Tv is " + smallSmart);
} else if (smart & size == 42){//start of if
System.out.println("The Price of your Tv is " + largeSmart);
}
}
首先,我建议您使用camel case convention命名变量。
此处您正在为智能分配电视
TV = Smart
=用于为变量赋值,==用于比较。
答案 4 :(得分:0)
你应该记住几件事。
首先,我建议您了解Java命名约定。根据示例,您的变量应为小写(smart
而不是Smart
)。这是一个指向Oracle文档的链接:http://www.oracle.com/technetwork/java/codeconventions-135099.html
其次,=
和==
之间存在很大差异。第一个是作业,第二个是比较。
第三,差异并不大,但你应该只选择一个&
或两个。在if
陈述中,它有点意义。有一个(&
),它只是意味着 AND ,有两个(&&
),它还意味着 AND ,带有一个调整:它“短路”。
什么是“短路”?在简历中,它是 math 。在这种情况下:
1 AND'something'='something';
0和'某事'= 0(
&&
会短路)
在if
语句中,您需要检查某个变量是否为空之前,以避免抛出NullPointerException
,因此Shurt-circuit是好的。像这样:
if( variable != null && variable.isSomething() ) {
//do stuff
}
如果变量variable
为空(因此variable != null
为false
),它将短路到false
,并且它不会抛出异常,因为它不会尝试读取不存在的变量。
我建议你总是进行短路评估。
同样的丁字裤用 OR 功能发生。你有普通|
和短路||
。在此, math 是:
0或'某事'='某事'
1或''某事'= 1(
||
将会短路)
第四,在写boolean TV = in.next() != null;
之类的东西时要小心,在Scanner
(我确定)的情况下它不会返回null,但它可能会返回一个空的{{1} }。
我希望我有所帮助。
祝你有个愉快的一天。 :)