Java程序没有输出我需要的东西

时间:2014-07-21 19:17:51

标签: java

我需要编写一个代码: 素数是一个大于1的正整数,只能由自身和1整除。您要编写一个程序,重复询问用户一个整数值,然后显示小于或等于该数字的所有素数。

功能要求

程序将提示用户输入正数,或提示值-1以结束程序。如果用户输入0或负数,程序将立即结束。除了整数之外,您的程序在输入上的行为将不会被测试。

对于从2到用户给出的数字的每个数字,程序将确定该数字是否为素数。在下面给出的列式格式中,程序将显示有关素数和非素数的信息。

当表格完成后,程序将显示给定范围内的素数计数和范围内的素数比率。

示例运行

Welcome to the prime number program!
########################################################
Please enter a positive integer: 6
Number    Is Prime  Counterexample
2         Yes       -
3         Yes       -
4         No        4 % 2 = 0
5         Yes       -
6         No        6 % 2 = 0
3 of the first 6 integers are prime; prime ratio = 0.5

到目前为止,我的程序只会输出:

Welcome to the prime number program!
########################################################
Please enter a positive integer: 2

我的代码是:

import java.util.Scanner;

    public class PrimeNumber
     {
        public static void main(String[] args)
        {
            Scanner sc =new Scanner(System.in);
            System.out.println("Welcome to the prime number program!");
            System.out.println("########################################################");
            Integer input=getInput(sc);
            if(input != null)
                { 
                    System.out.println("Number   Is Prime   Counterexample");
                    for(int l=2;l<l;l++)
                        {
                            int k=isPrime(l);
                            System.out.println(l+"\t"+(k==-1?"Yes\t\t"+"-":"No\t\t"+l+"%"+k+"=0"));
                        }
                    main(args);
                    return;
                }
            System.out.println("You Selected to exit ! Good Bye!");
        }

       public static int isPrime(int input)
        {
            for(int k=2;k<=input/2;k++)
                {
                    if(input%k==0)
                    {
                        return k;
                    }
                }
            return -1;
        }

       public static Integer getInput(Scanner sc)
        {
            System.out.println("Please enter a positive integer: 2");
            String input=sc.next();
            Integer i;
            try
            {
            i=new Integer(input);
            }
            catch(NumberFormatException e)
            {
                System.out.println("Invalid Input");
                i=input.chars().iterator().next();getInput(sc);
            }
            return i;
        }

       {



} }

有人可以帮我弄清楚我做错了吗?

1 个答案:

答案 0 :(得分:0)

永远不会执行for循环,因为l本身永远不会小于l。您需要从2循环到用户输入的数字:

for(int l=2;l<input.intValue();l++)