0
我真的很困惑如何使用java的每个 - 正确的循环。谁能帮我?在java中的扩展collalating计算
好的,这是交易。我有一个扩展的Collatz问题,我无法摆脱我的头脑。问题是我想列出两个变量x和y之间的范围的所有Collatz迭代,其中x> y的范围为0-10000。我的问题是,在第二个foor-loop中,我想对每个数值执行整个collatz计算,所以如果value = 7,我想计算x = 7(16)的collatz迭代,直到y = 19(20),整个序列是16,3,19,6,14,9,9,17,17,4,12,20,20。我在Java中这样做。
import java.util。 ; import java.lang。;
公共类hackCollatz {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int x;
int y;
int result = 0;
System.err.print("Sätt ett värde på x: ");
x = input.nextInt();
System.err.print("Sätt ett värde på y: ");
y = input.nextInt();
List<Integer> storeValue = new ArrayList<Integer>();
for(int i=x; i<=y; i++){
int value = i;
storeValue.add(value);
}
for(Integer value : storeValue){
for(int j = value; j > 1; j++){
if(j % 2 == 0){
j=j/2;
// System.out.println(j);
result++;
}
else{
j=j*3+1;
result++;
// System.out.println(j);
}
}
}
System.out.println(result);
}
}
'for(int j = value; j> 1; j ++)'..这不会导致无限循环吗?除非我错过了一些东西,因为'j'随着每次迭代而增加,它总是大于1.你应该用'j - '代替。 – Th3Cuber
啊,我会试试。我累了。 ;) 但它仍然无法按预期工作。我真的很困惑... –
哦,我看到了问题。根本不需要在迭代期间修改'j'。因此,只需使用'for(int j = value; j> 1;)'(因为您在循环内部修改了'j')。 – Th3Cuber