2014-09-02 57 views
0

我正在編寫一個簡短的程序來提示用戶輸入數字,然後我會測試它們是否爲負數並報告哪些數據通過了此測試。我正在尋找一種避免爲每個預期輸入重複邏輯的方法。如何測試多個輸入以檢測負數,同時記錄哪些輸入是負數?

這是我到目前爲止有:

import java.util.Scanner; 

public class Negative 
{ 
    public static void main(String[] arg) 
    { 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Insert three integers, USER."); 
     int x = scan.nextInt(); 
     int y = scan.nextInt(); 
     int z = scan.nextInt(); 
     if (x < 0 || y < 0 || z < 0) 
     { 
      System.out.println("A number is negative."); 
     } 
    } 
} 

我知道我可以獨自做每一個這些,但我想以某種方式凝結的代碼。

+0

如果你想知道哪些是消極的,你需要單獨測試每一個。您可以先將每個測試的結果存儲在一個變量中。 – 2014-09-02 19:26:55

+0

唉,太糟糕了。希望能夠實現多任務。謝謝。 – nextDouble 2014-09-02 19:28:43

+0

你可以但它可能會更復雜。我建議你把它分解成簡單的操作。 – 2014-09-02 19:30:06

回答

1

您始終可以創建一個方法,該方法將變量namevalue打印出來。喜歡的東西,

private static void display(String name, int val) { 
    if (val >= 0) { 
     System.out.printf("%s (%d) is NOT negative%n", name, val); 
    } else { 
     System.out.printf("%s (%d) is negative%n", name, val); 
    } 
} 

然後就可以調用display()

public static void main(String[] arg) { 
    Scanner scan = new Scanner(System.in); 
    System.out.println("Insert three integers, USER."); 
    display("x", scan.nextInt()); 
    display("y", scan.nextInt()); 
    display("z", scan.nextInt()); 
} 

現在,它實際上並不存儲xyz。如果您以後需要它們,那麼您確實需要

public static void main(String[] arg) { 
    Scanner scan = new Scanner(System.in); 
    System.out.println("Insert three integers, USER."); 
    int x = scan.nextInt(); 
    int y = scan.nextInt(); 
    int z = scan.nextInt(); 
    display("x", x); 
    display("y", y); 
    display("z", z); 
    // do something else with x,y or z 
} 
0

您也可以使用Google guava preconditions語句使其更清潔。

例如上面的代碼可以被改變..

import com.google.common.base.Preconditions.*; 
    public class Negative 
{ 
    public static void main(String[] arg) 
    { 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Insert three integers, USER."); 
     int x = scan.nextInt(); 
     int y = scan.nextInt(); 
     int z = scan.nextInt(); 
     Preconditions.checkArgument(x < 0 || y < 0 || z < 0 ,"Negative number entered"); 
    } 
} 

如果參數失敗,IllegalArgumentException將被拋出。 更多的文檔here

希望這有助於..

0

您可以通過簡單地將循環播放,直到用戶輸入正數做到這一點: -

int x = scan.nextInt(); 
int y = scan.nextInt(); 
int z = scan.nextInt(); 
while(x<0||y<0||z<0) 
{ 
    x = scan.nextInt(); 
    y = scan.nextInt(); 
    z = scan.nextInt(); 
}