我正在尝试循环查找脚本中包含的数学中的前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
感谢您的帮助!
答案 0 :(得分:0)
问题在于'nextString = s;'行。在do-while循环之前初始化'nextString = s'。第一次迭代后,将更新nextString值。目前,每次循环迭代都会设置为“000000”。