簡體   English   中英

我如何從周期中獲得正確的數量?

[英]how do I get the correct amount out of the cycles?

我有從大學的系統索引中改編的代碼。 總和應該是 15,但不是同一個數字。 請告訴我如何解決它。 提前致謝!

static void forMethod(int n, int a, int s){
       n = 3;
       a = 2;
       s = 0;
       for (int i = 1; 1 <= 3; ++i){
            s += 1 + a + Math.pow(a, i);
            System.out.println(s);
       }
}

難道你的 function 應該在給定范圍內增加權力? 您代碼中的拼寫錯誤表明您試圖通過反復試驗找到解決方案。

如果我的猜測是正確的, s可能是開始值, n可能是結束值。 a將是要提高的值。 使用您使用的值,結果將是 15!

    public static void main(String[] args){
        System.out.println(forMethod(3, 2, 0));
    }

    static int forMethod(int n, int a, int s){
        //n = 3;
        //a = 2;
        //s = 0;
        int result = 0;
        for (int i = s; i <= n; i++){
             result += Math.pow(a, i);
        }
        return result;
    }

讓我們逐行分解你在那里得到的東西

static void forMethod(int n, int a, int s){

這是一個名為 forMethod 的方法,它沒有指定它的修飾符,所以它是 package 私有的。 這意味着它只能由它所在的 package 訪問。它需要將 3 個數字傳遞給它才能工作。 這 3 個數字稱為參數。 它們是 int 類型,這意味着它們必須是 integer 個值。 因此,如果您要調用此 function(使方法中的代碼從該方法外部運行),您會想要調用它,並將 3 個 integer 值傳遞給它,例如 forMethod(1,2,3)

   n = 3;
   a = 2;
   s = 0;

這里取整數 n、a 和 s 並將它們分別設置為 3、2 和 0。 這就是人們困惑的原因。 為什么有人會用這樣的設定條款覆蓋傳遞到 function 的任何內容?

   for (int i = 1; 1 <= 3; ++i){

這是一個 for 循環,循環是一段代碼,它使某事一次又一次地發生。 for 循環可讓您決定希望該事件發生多少次。 它的意思是 (integer i = 0) 雖然 i 小於三可能是他們的意思,所以你可以用小寫 i 替換那個 1 (當 i 小於或等於 3 時運行下面的代碼波浪花括號{})(每次運行代碼時將 1 添加到 i)

        s += 1 + a + Math.pow(a, i);

+= 是一種表示加法的方式,所以 s 等於 s +1,因為 s 是 0,所以 s 1 + a (a=2) 所以它是 3。Math.pow 將它提高到一個冪,所以它說取 a 的 i 次方並將其添加到那個的 rest

        System.out.println(s);

這將 S 打印到控制台}

這將關閉 for 循環

}

這將關閉該方法

如果你能解釋一下你想讓代碼做什么,那就太好了,看來你不太了解代碼的作用,所以我會嘗試向你解釋它,你也許可以自己找到邏輯錯誤

 static void forMethod(int n, int a, int s){
         n = 3;
         a = 2;
         s = 0;
         for (int i = 1; 1 <= 3; ++i){
              s += 1 + a + Math.pow(a, i);
              System.out.println(s);
         }
  }

這是一個名為 forMethod 的方法(某些人也稱為 function),它接受 *3 參數 * int n、int a、int s。

什么是參數?

參數是用於在 function 定義期間定義特定值的變量。

您已定義 function forMethod 以要求任何想要使用(調用)function 的人提供 3 個數字 ( int ),您稱之為n a 和 s

錯誤:

您不需要在 function中設置 n=3 a=2 和 s=0 。 當您調用 function forMethod 時,它將與您請求的 arguments 一起提供。

讓我向您展示一些代碼:

class Main{
  public static void main(String[] args) {
    Numbers n = new Numbers();
    n.printSum(5,5,5);
  }
}

class Numbers{
  static void printSum(int a, int b, int c){
    System.out.println(a+b+c); //will print 5+5+5 = 15
  }
}

從上面的代碼可以看出,Main class 調用 function printSum 並為其提供3 arguments a,b 和 c。在我們的示例中,我們為其提供數字 5 5 和 5。printSum function 添加了 3 個參數(a, b, c) 並打印結果。

回到你的方法

考慮到這一點,我們已經可以修復您的 function 的部分內容:

  static void forMethod(int n, int a, int s){
         for (int i = 1; 1 < n; i++){
              s += 1 + a + Math.pow(a, i); //<-- sum = sum + 1 + a + a^i
              System.out.println(s);
         }
  }

好的!

現在我們已經稍微清理了您的代碼。 您現在可以使用此 function,如下所示:

class Main{
  public static void main(String[] args) {
    Numbers n = new Numbers();
    n.forMethod(3,2,0); //n = 3, a = 2, s = 0    
  }
}

現在我們需要修復你的for 循環

 for (int i = 1; 1 <= 3; ++i)

For 循環接受 3 個參數:

  • 詮釋我= 1; 這意味着“起始值為 int i,其值為 1”
  • 1 <= 3; 這意味着“當值 1 小於或等於 3 時,繼續循環”
  • ++i 這意味着“在開始循環之前,將 i 增加 1”

一個非常常見的 for 循環是這樣的:

for(int i = 0; i < stop_value_here; i++);

與上面的唯一區別是:

  • 我從零開始。
  • 當 i 小於停止值時繼續循環。
  • 在每個循環之后(不是之前)將 i 增加 1。

例如:

for(int i = 0; i < 3; i++)

這將循環 3 次

用這段代碼試試看。 它將打印 3 次“I am looping”。

class Main{
  public static void main(String[] args) {
    for(int i = 0; i < 3; i++){
      System.out.println("I am looping!");
    }
  }
}

你的問題

您的 for 循環將無限循環:

for (int i = 1; 1 <= 3; ++i)

由於:"Keep looping while 1 <=3" 1總是小於等於3,所以會一直循環下去。

修復你的代碼......有點

我不知道你應該如何從你的方法中得到 15,但這至少會讓你更接近:

class Main{
  public static void main(String[] args) {
    Numbers n = new Numbers();
    n.forMethod(3,2,0);
  }
}


  static void forMethod(int n, int a, int s){
         for (int i = 0; i < n; i++){
              s += 1 + a + Math.pow(a, i);
              System.out.println(s); //will print 4,9 and 16
         }
  }
}

我希望這有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM