2012-10-08 91 views
0

在我的代碼一個用戶在一個特定的溫度範圍內進入用這種方法來比較(默認範圍是0 - 100):返回一個範圍內的BigDecimal

public class range { 
    public void rangeset() 
     { 
     int range1 = 0; 
     int range2 = 100; 

     System.out.println("Please note that the default temp range is 0-100"); 
     System.out.println("What is the starting temperature range?"); 
     range1 = sc.nextInt(); 
     System.out.println("What is the ending temperature range?"); 
     range2 = sc.nextInt(); 
     System.out.println("Your temperature range is " + range1 + " - " + range2); 

     HW_5.mainMenureturn(); 

    }//end rangeset method (instance method) 

}//range class 

再往下,我有要求的輸入用戶輸入一個他們想要轉換爲華氏度的數字。

public class HW_5 { 
    public static double fahrenheit2Centigrade () 
    { 
     double result; 
     BigDecimal quotient = new BigDecimal("1.8"); 


     //take in input, take input as BigDecimal 
     System.out.println("Please enter the fahrenheit temperature you wish to convert to celsius"); 
     BigDecimal fah = sc.nextBigDecimal(); 

    } 
} 

所以,我想要做的是確保(這是一個BigDecimal)便進入了數字在其他方法中指定的範圍內。

1)如何獲得我的範圍集方法返回範圍的開始數和範圍的結束數,因爲您無法返回兩個值?

2)然後,我如何使用這些返回值來檢查方法中的BigDecimal是否在這些值之內?

請要求澄清。謝謝。

回答

1

這是一個範圍問題。目前,您正在聲明rangeset()方法中的兩個範圍變量,這意味着它們只在方法的「範圍」內可見(即只有該方法才能訪問這些變量)。

你應該考慮的是讓這些變量對整個班級都可見。

public class range { 
    private int lowerBound; 
    private int upperBound; 

    public void rangeset() 
     { 
     int lowerBound = 0; 
     int upperBound = 100; 

     System.out.println("Please note that the default temp range is 0-100"); 
     System.out.println("What is the starting temperature range?"); 
     lowerBound = sc.nextInt(); 
     System.out.println("What is the ending temperature range?"); 
     upperBound = sc.nextInt(); 
     System.out.println("Your temperature range is " + range1 + " - " + range2); 

     HW_5.mainMenureturn(); 

     }//end rangeset method (instance method) 

    public int getLowerBound() 
    { 
     return lowerBound; 
    } 

    public int getUpperBound() 
    { 
     return upperBound; 
    } 

}//range class 

一旦你有事情以這種方式設置,你可以在你的主類創建一個新的range類,調用它的相關方法,用你的getter方法來提取您所關心的數據。例如:

public class HW_5 { 
    public static double fahrenheit2Centigrade () 
    { 
     double result; 
     BigDecimal quotient = new BigDecimal("1.8"); 
     range myRange = new range(); 
     myRange.rangeset(); 
     System.out.printf("%d - %d", myRange.getLowerBound(), myRange.getUpperBound()); 


     //take in input, take input as BigDecimal 
     System.out.println("Please enter the fahrenheit temperature you wish to convert to celsius"); 
     BigDecimal fah = sc.nextBigDecimal(); 

    } 
} 

Ps。通常你應該使用大寫字母來開始你的類名,即。 Range而不是range

+0

問題是通過從** fahrenheit2Centrigrade **中調用** rangeset **方法,您迫使用戶在計算中定義範圍。我希望能夠使用他們輸入的內容將其與BigDecimal進行比較。問題是這些變量Upper和Lowerbound是本地的。 – Brian

+0

他們在我的答案中不是本地的。你可以創建'range'並在你喜歡的任何地方調用'rangeset'。如果你在一個類的範圍內創建'range',那麼所有的類方法都可以訪問它。 –

+0

爲什麼當我在靜態方法fahrenheit2Centrigrade的Range類中創建對象時,我得到的不能從非靜態錯誤引用它,但是當我在靜態方法中從HW_5類創建對象時,它很好嗎? – Brian