【问题标题】:Else without if否则没有如果
【发布时间】:2013-10-27 21:05:09
【问题描述】:

我正在尝试为周一到期的一个项目的计算机编程课程编写代码,而且我对 Java 还很陌生,但我正在尝试编写一个程序,该程序将首先确定用户输入的数字是否是偶数还是奇数,然后确定该数是否为素数。我不确定我的算法是否正确,所以如果有人对我的算法或其他任何程序有任何更正,请说出来,但我真正的问题是程序拒绝编译。每次我尝试时,它都说它有一个没有 if 问题的 else。这是我的命令框的链接:

http://s1341.photobucket.com/user/Emi_Nightshade/media/Capture_zps45f9a2ea.png.html

这是我的代码:

import java.io.*;
import java.util.*;

public class Lesson9p1_ThuotteEmily
{
    public static void main(String args[])
    {
        Scanner kbReader0=new Scanner(System.in);
        System.out.print("\n\nPlease enter an integer. An integer is whole number, and it can be either negative or positive. Please enter your number: ");
        long num=kbReader0.nextLong();

        if(num%2==0)                                     //if and else with braces
        {
           System.out.println("Your integer " + num + " is even.");
        }
        else
        {
            System.out.println("Your integer " + num + " is odd.");
        }

        Scanner kbReader1=new Scanner(System.in);
        System.out.print("\n\nWould you like to know if your number is prime? Please enter yes or no: ");
        String yn=kbReader1.nextLine();

        if(yn.equals.IgnoreCase("Yes"))
        {
            System.out.println("Okay. Give me a moment.");

            {
                if(num%2==0)
                {
                    System.out.println("Your number isn't prime.");
                }
                else if(num==2)
                {
                    System.out.println("Your number is 2, which is the only even prime number in existence. Cool, right?");
                }
                for(int i=3;i*i<=n;i+=2)
                {
                    if(n%1==0)
                    {
                        System.out.println("Your number isn't prime.");
                    }
                }
                else
                {
                    System.out.println("Your number is prime!");
                }
            }
        }
        if(yn.equals.IgnoreCase("No"))
        {
            System.out.println("Okay.");
        }
    }
}

如果有人能帮助我解决这个问题以及我在程序其他地方可能遇到的任何问题,我将不胜感激!谢谢。

【问题讨论】:

  • 请在您的问题中添加确切的错误消息文本。
  • 检查你的牙套。确实有一个没有相应 if 的 else。 (提示:看看你的 for 循环)
  • 那是因为else 没有if。这是最后一个for 语句之后的else
  • 是否给出行号?你有一个不错的 IDE 可以显示这个吗?

标签: java if-statement syntax compiler-errors


【解决方案1】:

for 循环之后有一个else 语句

for(int i=3;i*i<=n;i+=2)
{
    if(n%1==0)
    {
        System.out.println("Your number isn't prime.");
    }
}
else
{
    System.out.println("Your number is prime!");
}

您可能必须创建一个布尔变量来执行此操作。有多种方法可以做到这一点,但这是我可能会使用的一种

boolean isPrime = true;
for(int i=3;i*i<=n;i+=2)
{
    if(n%1==0)
    {
        isPrime = false;
    }
}
if(isPrime)
{
    System.out.println("Your number is prime!");
}
else
{
    System.out.println("Your number isn't prime.");
}

【讨论】:

  • 请注意,他的代码中有一些错误(例如 n%1 而不是 n%i):)。
  • 它在 Java 中称为 boolean,而不是 bool
【解决方案2】:

问题来了

            else
            {
                System.out.println("Your number is prime!");
            }

是在for循环之后,不是if语句,你要切换它。 :

           if(num%2==0)
            {
                System.out.println("Your number isn't prime.");
            }
            else if(num==2)
            {
                System.out.println("Your number is 2, which is the only even prime number in existence. Cool, right?");
            }
            else
            {
                System.out.println("Your number is prime!");
            }
            for(int i=3;i*i<=n;i+=2)
            {
                if(n%1==0)
                {
                    System.out.println("Your number isn't prime.");
                }
            }

这是功能性但不正确的算法,你可能想要这个:

           if(num%2==0)
            {
                System.out.println("Your number isn't prime.");
            }
            else if(num==2)
            {
                System.out.println("Your number is 2, which is the only even prime number in existence. Cool, right?");
            }

            boolean isPrime = true;
            for(int i=3;i*i<=n;i+=2)
            {
                if(n%i==0)
                {
                    System.out.println("Your number isn't prime.");
                    isPrime = false;
                }
            }
            if (isPrime){
                System.out.println("Your number is prime!");
            }   

【讨论】:

    【解决方案3】:

    方块

    else
    {
        System.out.println("Your number is prime!");
    }
    

    前面没有对应的'if'。

    【讨论】:

      【解决方案4】:
      import java.io.*;
      import java.util.*;
      
      public class Lesson9p1_ThuotteEmily {
          public static void main(String args[]) {
              Scanner kbReader0 = new Scanner(System.in);
              System.out.print("\n\nPlease enter an integer. An integer is whole number, and it can be either negative or positive. Please enter your number: ");
              long num = kbReader0.nextLong();
      
              if (num % 2 == 0) // if and else with braces
              {
                  System.out.println("Your integer " + num + " is even.");
              } else {
                  System.out.println("Your integer " + num + " is odd.");
              }
      
              Scanner kbReader1 = new Scanner(System.in);
              System.out.print("\n\nWould you like to know if your number is prime? Please enter yes or no: ");
              String yn = kbReader1.nextLine();
      
              if (yn.equalsIgnoreCase("Yes")) {
                  System.out.println("Okay. Give me a moment.");
      
                  {
                      if (num % 2 == 0) {
                          System.out.println("Your number isn't prime.");
                      } else if (num == 2) {
                          System.out.println("Your number is 2, which is the only even prime number in existence. Cool, right?");
                      } else
                          for (int i = 3; i * i <= num; i += 2) {
                              if (num % i == 0) {
                                  System.out.println("Your number isn't prime.");
                              } else {
                                  System.out.println("Your number is prime!");
                              }
                          }
                  }
              }
              if (yn.equalsIgnoreCase("No")) {
                  System.out.println("Okay.");
              }
          }
      }
      

      包括所有更正。

      【讨论】:

      • 在没有任何描述或解释的情况下更正作为家庭作业的答案是糟糕的形式,并且不如其他答案有用。
      • 现在想一想最后一个 for 循环中发生了什么:for (int i = 3; i * i &lt;= num; i += 2){}
      • ...不,不。 -我知道了。问这个问题的人没有。不要和我说话,改变你的答案。
      • 伙计,你的算法错了:),让我们对任何数字运行它,看看你得到多少次“你的数字是素数”......
      • @libik 这是 OP 的算法。我只是更正了要编译的代码。您有什么要补充的,请随时补充。
      【解决方案5】:

      这在 Java 中不起作用(没有 if 的 2 个 else)

          if (1 == 1){
      
          }
          else
          {
      
          }
          else //syntax error here - else without if
          {
      
          }
      

      这行得通:

                      if (1 == 1){
      
                      }
                      else
                      {
                          if (2 == 2){
      
                          }
                          else //this works
                          {
      
                          }
                      }
      

      【讨论】:

        猜你喜欢
        • 2021-03-26
        • 1970-01-01
        • 2020-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多