import java.util.Scanner;
public class youalwaystwo
{
public static void main(String[] args)
{
String sentence;
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter a sentence.");
sentence = keyboard.nextLine();
{
if (sentence.charAt(sentence.length()-1) == '?' ) if (sentence.length( ) %2 == 0)
System.out.println("Yes.");
else if (sentence.charAt(sentence.length()-1) == '?' ) if (sentence.length( ) %1 == 0)
System.out.println("No.");
else if (sentence.charAt(sentence.length()-1) == '!' )
System.out.println("Wow.");
else
System.out.println("You always say \"" + sentence + "\".");
}
}
}
问题是当我输入一个没有的句子?要么 !什么都没有打印出来。
答案 0 :(得分:4)
我已经格式化了你的代码并添加了括号,现在应该很清楚发生了什么:
public static void main(String[] args) {
String sentence;
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter a sentence.");
sentence = keyboard.nextLine();
if (sentence.charAt(sentence.length() - 1) == '?') {
if (sentence.length() % 2 == 0) {
System.out.println("Yes.");
} else if (sentence.charAt(sentence.length() - 1) == '?') {
if (sentence.length() % 1 == 0) {
System.out.println("No.");
} else if (sentence.charAt(sentence.length() - 1) == '!') {
System.out.println("Wow.");
} else {
System.out.println("You always say \"" + sentence + "\".");
}
}
}
}
即。你有一个大的if
在最后检查?
- 如果没有一个没有发生。
从中汲取教训; 始终使用{}
(当您更好地了解Java时,此规则有例外情况,但现在总是)。
答案 1 :(得分:1)
你有一堆严重缩进的if
语句,所以很难看出会发生什么。让我们正确缩进并添加{
和}
,以明确代码的结构。
if (sentence.charAt(sentence.length()-1) == '?' ) {
if (sentence.length( ) %2 == 0) {
System.out.println("Yes.");
}
else if (sentence.charAt(sentence.length()-1) == '?' ) {
if (sentence.length( ) %1 == 0) {
System.out.println("No.");
}
else if (sentence.charAt(sentence.length()-1) == '!' ) {
System.out.println("Wow.");
}
else {
System.out.println("You always say \"" + sentence + "\".");
}
}
}
现在您看到如果句子末尾没有?
会发生什么:第一个if
的表达式将评估为false
,其他所有内容都将被跳过。< / p>
答案 2 :(得分:0)
我认为你的if
陈述应该是这样的:
if (sentence.charAt(sentence.length() - 1) == '?') {///// for ?
if (sentence.length() % 2 == 0) {
System.out.println("Yes.");
} else if (sentence.length() % 1 == 0) {
System.out.println("No.");
}
} else if (sentence.charAt(sentence.length() - 1) == '!') {/// for !
System.out.println("Wow.");
} else {
System.out.println("You always say \"" + sentence + "\".");/// for anything else without ? or !
}
答案 3 :(得分:0)
更改
if (sentence.charAt(sentence.length()-1) == '?' ) if (sentence.length( ) %2 == 0)
System.out.println("Yes.");
else if (sentence.charAt(sentence.length()-1) == '?' ) if (sentence.length( ) %1 == 0)
到
if (sentence.charAt(sentence.length()-1) == '?' && sentence.length( ) %2 == 0)
System.out.println("Yes.");
else if (sentence.charAt(sentence.length()-1) == '?' && sentence.length( ) %1 == 0)
答案 4 :(得分:0)
我认为实际问题是由于if语句阶梯的布局非常混乱造成的。
只需格式化代码即可避免此类问题。许多最近的Java编辑器都具有“格式源”功能,可以自动执行此操作。我确信它是正确对齐的,很容易看到任何问题。这里使用的确切编码风格并不重要,只需使用任何。