3 回答

TA貢獻1830條經(jīng)驗 獲得超3個贊
這里:
int total = first * second;
接著是if
, 然后是:
return total;
意思是:每次當你的if
計算結(jié)果為時false
,你的方法只返回你最初分配的值!
你可以做什么:有一個else
打印錯誤消息的塊。或者拋出異常。
但理想情況下,您應該在這里分離關(guān)注點。意義:
寫一個類似的方法
boolean inRange(int first, int second)
。該方法返回true
orfalse
,具體取決于第一個/第二個符合您的條件如果該方法返回 true,則調(diào)用
compute()
,否則打印您的消息
換句話說:你的compute()
方法可能根本不應該有那個 if 塊。讓該方法計算結(jié)果,并讓另一個方法告訴您是否要調(diào)用compute()
。

TA貢獻1836條經(jīng)驗 獲得超3個贊
從 s 構(gòu)建的“梯子”if表現(xiàn)為邏輯and關(guān)系。第一個if在條件適用時通過,然后第二個if在前一個條件和它自己的條件都適用時通過,依此類推。
然而,對于檢查是否有問題,違反任何(甚至一個)規(guī)則就足夠了,這是一種邏輯or關(guān)系。
雖然這不是最好的編碼風格,但您可以通過翻轉(zhuǎn)比較和拆解階梯來機械地將該結(jié)構(gòu)重寫成這樣:
public static int computeProduct(int first , int second)
{
int max = 40;
int min = 10;
if (first < min) {
System.out.println("Number is not in range, please try again");
return 0;
}
if (first > max) {
System.out.println("Number is not in range, please try again");
return 0;
}
if (second < min) {
System.out.println("Number is not in range, please try again");
return 0;
}
if (second > max) {
System.out.println("Number is not in range, please try again");
return 0;
}
return first*second;
}
0如果輸入無效,此方法顯示消息并返回,如果一切正常則返回產(chǎn)品。
然后它可以成為一個實際的 logical ,在 Javaor中表示為:||
public static int computeProduct(int first , int second)
{
int max = 40;
int min = 10;
if (first < min
|| first > max
|| second < min
|| second > max) {
System.out.println("Number is not in range, please try again");
return 0;
}
return first*second;
}
現(xiàn)在想想,你原來的條件也沒有問題,只是結(jié)果要翻轉(zhuǎn):當代碼到達最里面的塊時,一切都很好,所以這是你可以的地方return first*second;。如果有任何if失敗,您需要消息和return 0;:
public static int computeProduct(int first , int second)
{
int max = 40;
int min = 10;
if (min <= first) {
if (first <= max) {
if (min <= second) {
if (second <= max) {
return first*second;
}
}
}
}
System.out.println("Number is not in range, please try again");
return 0;
}
現(xiàn)在我不太確定這是否有幫助......

TA貢獻1797條經(jīng)驗 獲得超4個贊
給你:
public static int computeProduct(int first , int second)
{ int max = 40;
int min = 10;
if(first<=min || second<=min ||first>=max||second>=max)
{
System.out.println("Number is not in range, please try again");
return 0; //or return whatever you like
}
return first *second ;
}
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a number between 10 to 40:");
int x = scanner.nextInt();
System.out.println("Enter another number between 10 to 40:");
int y = scanner.nextInt();
int total = computeProduct(x, y);
if(total!=0){
System.out.print("Product of x and y = " + total);
}
else {
System.out.print("cannot compute as numbers are not in range");
}
}
添加回答
舉報