gpt4 book ai didi

java - 循环减少数万,然后数千,然后数百,然后数十

转载 作者:行者123 更新时间:2023-12-01 17:26:33 24 4
gpt4 key购买 nike

我想在 Java 中创建一个循环,该循环以数学方式获取一个变量(例如一百万),然后按照下面的程序和表中详细说明的步骤减少它。

package com.sbs.test.maths;

import org.testng.annotations.Test;

public class Maths {
@Test
public void test() {
int i = 1000000;
System.out.println( i );
while( i > 1 ) {
i = reduce( i );
System.out.println( i );
}
}

private int reduce( int value ) {
if ( value > 1 && value <= 10 ) value -= 1;
else if ( value > 10 && value <= 100 ) value -= 10;
else if ( value > 100 && value <= 1000 ) value -= 100;
else if ( value > 1000 && value <= 10000 ) value -= 1000;
else if ( value > 10000 && value <= 100000 ) value -= 10000;
else if ( value > 100000 && value <= 1000000 ) value -= 100000;
else if ( value > 1000000 && value <= 10000000 ) value -= 1000000;
else if ( value > 10000000 && value <= 100000000 ) value -= 10000000;
return value;
}
}

value     reduce-by   result
1000000 - 100000 = 900000
900000 - 100000 = 800000
...
200000 - 100000 = 100000
100000 - 10000 = 90000
90000 - 10000 = 80000
...
20000 - 10000 = 10000
10000 - 1000 = 9000
9000 - 1000 = 8000
...
2000 - 1000 = 1000
1000 - 100 = 900
900 - 100 = 800
...
200 - 100 = 100
100 - 10 = 90
90 - 10 = 80

可以在不使用令人讨厌的 if 级联来检测数字是否为 100、1000、10000、100000 或更多的情况下完成此操作吗?

我找到了javascript example我几乎要开始使用 Java 工作了,但它并不适用于所有变体。我运行了下面的程序,但正如您将看到的,它卡在了我们需要在归约结束时丢失零的位置。

System.out.println( "----------------------------------------------" );
for ( int i = 1000000; i > 0; i -= (int) Math.pow( 10, Math.floor( Math.log( i ) / Math.log(10) ) ) ) {
System.out.println( i );
}

输出:

1000000
900000
800000
700000
600000
500000
400000
300000
200000
100000

不幸的是,数学不是我的强项,因此非常感谢对此的任何帮助。

谢谢!

最佳答案

我不太擅长java,但是两个嵌套循环可能会工作并且更简单:

for ( int i = 1000000; i > 1; i /= 10 ) {
for ( int j = i; j > i / 10; j -= i / 10 ) {
System.out.println( j );
}
}
System.out.println( 1 );

关于java - 循环减少数万,然后数千,然后数百,然后数十,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14521329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com