【问题标题】:Program terminates when called inside main function在主函数内部调用时程序终止
【发布时间】:2015-11-08 18:11:02
【问题描述】:

我是 Java 编程的新手,我用 C 和 C++ 编程,但最近转向 Java,所以我对 Java 的情况有点困惑。我在我的 main 中调用了一个函数,但是程序被终止了,我不知道它为什么会发生并且无法弄清楚。这是我的程序

package Prime;
import java.util.Scanner;
public class isprime
{
    public static boolean isPrime (int n)
    {
        int flag=0;
        for (int i=2;i<=n;i++)
        {
            if(i%n==0)
            {
                flag=1;
            }
        }   
        if(flag==1)
        {
            return false;
        }
        else
        {
            return true;
        } 
    }   
    public static void main(String[] args)
    {
    int n;
    System.out.println("Please enter a number you want to test");
    Scanner sc = new Scanner(System.in);
    sc.close();
    isPrime(n);
    }   
    n = sc.nextInt();
}

【问题讨论】:

  • 为什么n = sc.nextInt();不在main()的范围内?
  • public static boolean isPrime (int n) 为什么布尔方法采用 int?
  • 因为我必须返回真或假
  • 据我所知,这根本不应该编译,因为对 n 的赋值超出了任何方法。
  • rakeb.mazhual 它在我的程序里面,但是这个网站上的编辑把它搞砸了

标签: java call


【解决方案1】:
  • 您的n = sc.nextInt(); 超出了main() 函数的范围。此外,您要先关闭扫描仪。

  • 您调用了isPrime(n);,它返回了boolean,但您没有捕捉到return 的值。

你想做这样的事情:

public static void main(String[] args) {
    int n;
    System.out.println("Please enter a number you want to test");
    Scanner sc = new Scanner(System.in);
    n = sc.nextInt();

    if (isPrime(n)) {
        System.out.println("prime");
    } else {
        System.out.println("not prime");
    }
    sc.close();
}

最后,你的素数计算是错误的。素数本身可以整除,所以改变

for (int i=2;i<=n;i++)

for (int i=2;i < n;i++)
              ^^^  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-14
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多