为什么我的代码无法应对此挑战?

时间:2016-01-13 11:10:53

标签: java for-loop

以下是一个简单的代码挑战。第一个块是我的代码。第二个块是挑战作者提供的正确代码。

虽然我看到'正确'代码工作,我没有看到我的代码没有。任何人都可以对此有所了解吗?

//MY CODE

public String stringTimes(String str, int n) {

  for(int i=0; i<n; i=i+n){
    str = str + str; 
  }

  return str;
}

//==================================================

//CORRECT CODE

//  String result = "";

//  for (int i=0; i<n; i++) {
//    result = result + str;  // could use += here
//  }

//  return result;
//}

2 个答案:

答案 0 :(得分:3)

出现问题的原因是你使用i+n循环中发生的增量恰好只迭代你的循环两次。

您需要打印n次,因此您需要具有正确的迭代增量。

同样在代码中,您使用单个变量并在每次迭代中连接相同的变量将导致附加str varibale的整个修改内容。想想str是&#34; A&#34;在开始。然后将其附加到"A" + "A"。之后你有"AA" + "AA"然后"AAAA" + "AAAA"等等...... 正如您所看到的,您在每个迭代步骤中将第一个str的数量加倍(来自Tom的建议编辑)

检查代码的正确方法

public String stringTimes(String str, int n) {
    String result="";
    for (int i = 0; i < n; i++) {
        //str = str+str;//(erronous code here)
        result = result +str;
    }
    return result;
}

答案 1 :(得分:0)

    for(int i=0; i<n; i++) { //i starts at 0, as long as i is less than n, add 1 to i.
        str = str + str; //the string becomes itself plus itself.
    }

  return str;
}