2011-03-11 52 views
12

`我不確定要插入什麼代碼甚至是哪裏,但我想檢查輸入的號碼是否是奇數。檢查輸入的號碼是否爲奇數

import java.io.*; 
import javax.swing.JOptionPane; 

public class Diamond { 
    public static void main(String [] args) throws IOException { 

     BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in)); 
     String input; 
     int num; 
     System.out.println("input number: "); 
     input = stdin.readLine(); 
     num = Integer.parseInt(input); 

     if (num % 2 ==1){ 
      int d = num; 
      int e = 0; 
      for (int a = 0; a <= num; a++) { 
       for (int c = d; c>= 1; c--) 
        System.out.print(" "); 
       d-=1; 
       for (int b = 1; b <= a; b++) 
        System.out.print ("* "); 
       System.out.println(); 
      } 

      num-=1; 
      for (int a = 0; a<=num; a++) { 
       for (int b = num; b > a; b--) 
        System.out.print (" *"); 
       System.out.println(); 
       for (int c = 0; c <= e; c++) 
        System.out.print(" "); 
       e+=1; 
      } 
     } else { 
      System.out.println("Please enter an odd number!"); 
     } 
    } 
} 
+1

邁克,你不把[代碼]'和'[/代碼]'這裏'之間的代碼。我只是選擇它並點擊代碼圖標;使用代碼塊的另一種方法是將其縮進四個空格。 – 2011-03-11 18:41:44

+0

對不起,但我無法讓代碼在帖子中正確顯示。 – Mike 2011-03-11 18:55:58

+0

我添加了if-else語句,但不認爲它是正確的。 – Mike 2011-03-11 19:00:31

回答

50

使用modular arithmetic

if (number % 2 == 0) { 
    // even 
} else { 
    // odd 
} 

更新:

您可以測試這個代碼在這裏:

請注意,使用number % 2 == 1檢查均勻度將會失敗。

要檢查一個數字是否奇數,可以使用(number & 1) != 0

+0

就像在Python中的快速回復一樣,你可以這樣做:'int(z/2)== float(z)/ 2',但大多數會使用明顯的'%'。 – miku 2011-12-23 11:26:20

+0

你確定使用%是正確的,但我沒有使用這個%運算符? – Gensheriff 2011-12-23 12:37:09

+1

'數字%2'表示除數2的餘數。所有的偶數都不會產生餘數,所有的奇數都會。 – 2015-06-25 12:03:53

5

if的內部不能有readLine首先你需要得到值接下來你可以使用你的if

它是這樣的:

BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in)); 

String input; 
int num; 

System.out.println("input number: "); 

    input = stdin.readLine(); 
    num = Integer.parseInt(input); 

if (num % 2 == 1) { 
// odd 
} else { 
    System.out.println("Please enter an odd number!"); 
} 

最後 - 不要使用名爲 「A」, 「E」 或 「d」值 - 這是非常令人困惑。只要命名變量名稱,讓讀者知道/猜測他們在你的代碼中的角色。我不知道你的「a」或b,c,d等的含義是什麼。例如,你的num應該被命名爲enteredValue來澄清你的代碼。

在Java中
+0

我改變了它,但有些東西不是它應該是的,當我輸入一個偶數時,它什麼都不做,如果我輸入一個奇數,它就可以正常工作 – Mike 2011-03-11 20:51:11

+0

我喜歡幫助你,但是你的代碼很難閱讀。U需要重命名你的變量...添加一些私人函數,而不是多個代碼行內的if-else - > if - function1()(named named!)else - function2()... http:// introcs .cs.princeton.edu/11style /閱讀它plz,或谷歌其他回合**清除代碼**和記住 - 代碼需要易於閱讀! – dantuch 2011-03-11 21:28:42

+2

請不要在您的答案和您的意見中使用文字說話。這是一個*專業和愛好者程序員的網站*,因此至少需要一定程度的問題和解答的專業性。 – 2011-03-11 21:29:22

1

位運算(位操作)的方式通過觀察說,100(4號)VS 001,每個位做與操作,並返回爲0和1。如果

if ((num & 1) != 0) //odd 
{ 
    //do something here 
} else { //even 
    //do something here 
} 

作品結束位是0,就像4一樣,它總是會變成偶數。如果結束位是1,那將是奇怪的。

10

NUM%2 == 1點返回上負奇數不正確的結果,分割與2的其餘部分將不爲1 這可以是固定的,如下所示:

public boolean isOddNumber(int num) { 
    return (num & 1) != 0; 
} 
+0

Java Findbugs也喜歡這種方法 – Matt 2016-11-18 02:09:07

2

Chaker的大約負整數的回答是證實。 在我的JavaSE-1.8

System.out.println("result =" + (-3 % 2 == 1)); 


它顯示的結果=假,而不是真正的