2014-07-21 31 views
0

我需要編寫一個代碼: 質數是一個大於1的正整數,它只能被自身和1整除。您將編寫一個程序,用戶輸入一個整數值,然後顯示小於或等於該數字的所有素數。Java程序不會輸出我需要的東西

功能要求

程序將提示用戶輸入一個正數,或-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; 
     } 

     { 



} } 

有人可以幫助我弄清楚我是什麼做錯了?

+0

那麼,在你的for循環中你有'l jrad

+0

這是一個使用有意義的變量名稱的海報示例,並且絕不使用小寫的'L'作爲變量名稱(與'1'太相似)。 –

回答

0

for循環從未執行,因爲l永遠不會小於l本身。你需要從2循環到用戶輸入的數字:

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

這給我留下了錯誤信息:運算符<=未被識別爲參數類型int,Integer? – programQuestions

+0

看起來您正在使用不支持自動裝箱和拆箱的Java舊版本...嘗試更新代碼。 – manouti

+0

這沒有出現錯誤,但它仍然只是編碼:歡迎來到素數編程! ################################################# ####### 請輸入一個正整數:2 – programQuestions

相關問題