2017-02-12 111 views
-2
import java.util.Scanner 

public class Editable { 

/* Return true if amount is within MIN_AMOUNT and MAX_AMOUNT 
*/ 
public static boolean isValidAmount(double amount) { 
    return amount > MIN_AMOUNT && amount < MAX_AMOUNT; 
} 

/* Asks user to input amount until isValidAmount is true. 
*/ 
public static void main(String[] args) { 
Scanner scanner = new Scanner(system.in); 

} 

我是Java的新手,我一直在爲此苦苦掙扎。 我要求在主要用戶輸入,我需要它繼續詢問用戶輸入,直到isValidAmount返回true。我已經嘗試了多種不同的解決方案,但似乎無法使其發揮作用。如何使用不同的方法驗證掃描儀輸入?

public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 
    double inputAmount = 0; 
    try { 
     while (!isValidAmount(inputAmount)) { 
      System.out.println("Enter amount:"); 
      inputAmount = scanner.nextDouble(); 
      scanner.next(); 
     } 
    } catch (Exception e) { 
     System.out.println("Input error."); 
     scanner.next(); 
    } 
+1

您能否詳細說明「似乎無法使其工作」的含義? –

回答

1

首先你只需要一個nextDoublescanner.next()會讀取下一個值並丟棄它。另外,嘗試使用do while循環:

public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 
    double inputAmount = 0; 
    try { 
     do { 
      System.out.println("Enter amount:"); 
      inputAmount = scanner.nextDouble(); 
     } while (!isValidAmount(inputAmount)); 
    } catch (Exception e) { 
     System.out.println("Input error."); 
     scanner.next(); 
    } 
} 

我想也許你inputAmount已經是一個有效的值提示用戶面前。在檢查條件之前,do while循環將始終執行括號之間的語句。如果條件已經爲假,while循環將不執行括號中的語句。

+0

謝謝,這似乎爲我工作。 scanner.next()可能是問題所在。 – karleh

0

只是評論出scanner.next();。你不需要它。否則你的計劃是完美的。 (我假設MIN_AMOUNT被宣佈爲> 0)。