循环在某处出错了

时间:2013-12-11 07:07:11

标签: java arrays parsing loops

我正在尝试循环查找脚本中包含的数学中的前10个有效数字,但问题是我无法使循环正常工作。

public class TestLoops{

 public static void main(String []args){
    int[] intArray = new int[6];
    String nextString;
    int count = 0;
    int nextnum;
    String s = "000000";
         int strLength = s.length();
          if(strLength != 6) {
   System.out.println("Not a valid length");
} else {

    do {
for(int i=0;i<6;i++) {
    nextString = s;
  intArray[i] = Integer.parseInt(String.valueOf(nextString.charAt(i)));
}
   int pos1 = intArray[5];
   int pos2 = intArray[4]*10;
   int pos3 = intArray[3]*100;
   int pos4 = intArray[2]*1000;
   int pos5 = intArray[1]*10000;
   nextnum = pos1 + pos2 + pos3 + pos4 + pos5 + 1;
   nextString = String.format("%06d", nextnum);


int d7 = ((4*intArray[0])+(10*intArray[1])+(9*intArray[2])+(2*intArray[3])+intArray[4]+(7*intArray[5])) % 11;
int d8 = ((7*intArray[0])+(8*intArray[1])+(7*intArray[2])+(intArray[3])+9*intArray[4]+(6*intArray[5])) % 11;
int d9 = ((9*intArray[0])+(intArray[1])+(7*intArray[2])+(8*intArray[3])+7*intArray[4]+(7*intArray[5])) % 11;
int d10 = ((intArray[0])+(2*intArray[1])+(9*intArray[2])+(10*intArray[3])+4*intArray[4]+(intArray[5])) % 11;


if (d7==10) { break;  }
else if (d8==10) { break; }
else if (d9==10) { break;  }
else if (d10==10) { break; }
else {
System.out.println("" + nextString + d7 + d8 + d9 + d10);
         count++;
}
    }
         while ( count < 10);{


}}

作为参考,前三个有效数字是: 000000 000001 000002

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

问题在于'nextString = s;'行。在do-while循环之前初始化'nextString = s'。第一次迭代后,将更新nextString值。目前,每次循环迭代都会设置为“000000”。