如果树没有打印,我在else中的else语句

时间:2014-02-06 08:37:43

标签: java

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 + "\".");
    }
  }
}

问题是当我输入一个没有的句子?要么 !什么都没有打印出来。

5 个答案:

答案 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编辑器都具有“格式源”功能,可以自动执行此操作。我确信它是正确对齐的,很容易看到任何问题。这里使用的确切编码风格并不重要,只需使用任何。