2016-11-24 50 views
0

我是一個noob程序員,但我一直堅持這一點的代碼。你如何遞減開始?我已經嘗試了幾種不同的方法,但是他們都要麼採取一個荒謬的數量的代碼或不正常工作。我一直試圖在我的所有編程任務中實現這個「簡單」的代碼片段,但它一直沒有解決。謝謝!如何緩步開始?

p.s.我已經完成了作業。我只是想讓它更「完整」。

public class OddProduct { 


    public static void main(String[] args) { 
     //Inputs from user 
     System.out.println("Enter an odd number"); 
     Scanner input_odd = new Scanner(System.in); 
     int odd = input_odd.nextInt(); 

     int oddproduct = 1; 

     //Multiplies all odd integers 
     for (int counter = 1; counter <= odd; counter = counter + 2){ 
      oddproduct = oddproduct * counter; 
     }//end of for- loop 
     System.out.printf("\nThe product of all the odd integers up to %d is %d\n", 
       odd, oddproduct); 

     /* MY NOTES FOR RECURSE 
     if (odd%2 == 1){ proceed normally} 
     else if (odd%2 != 1) { HOW TO LOOP BACK???} 
     else { println = "Application closed"} 
     */ 
    }//end of main method 

}//end of OddProduct class 
+1

因爲'recursion'是一個專門的編程技術,我不認爲你的意思是'遞歸回start'而是'返回'開始?無論如何,可能你想要的是一個循環,需要你的輸入(並執行邏輯),直到輸入某個字符? –

+0

@ScaryWombat是的,我想我會需要一個時間函數,但我不知道該如何放置它。我從字面上花了幾個小時。我會做其他問題來解決問題。我只想看看它是如何完成的,就像停止循環的計數器方法 –

回答

0

基於您注意我覺得這就是你需要

Scanner input_odd = new Scanner(System.in); 
    int odd = 0; 

    while (odd % 2 != 1) { // fails first time && if user enters even number 
     System.out.println("Enter an odd number"); 
     odd = input_odd.nextInt(); 
    } 
+0

謝謝。我之前做過類似的事情,但我想我必須小心放置它的位置。 –

+0

是的,如果你用這個替換你的第一條主線,它應該可以工作。此外,如果這個答案有用,請考慮upvote和/或接受。謝謝 –

+0

剛剛做到了。非常感謝@ScaryWombat –