1

如何在 Java 中生成给定的系列

JDK1.0
JDK1.1
JDK1.2
JDK1.3
JDK1.4
JDK1.5
JDK1.6

我在 for 循环中使用了浮动变量,但它会产生错误。

for(float f=1.0;f<1.7;f=f+0.1)
     System.out.println("JDK"+f);
4

8 回答 8

4
for(int i = 0; i < 7; i++){
    System.out.println("JDK 1." + i);
}

我认为这应该可以解决您的问题

于 2013-07-01T05:01:21.620 回答
3
for(float f=1.0; f<1.7; f=f+0.1)
     System.out.println("JDK"+f);

需要改为

for(float f=1.0F; f<1.7; f=f+0.1F)
    System.out.println("JDK"+f);

或者使用双

for(double f=1.0; f<1.7; f=f+0.1)
    System.out.println("JDK"+f);

使用双精度数更好,因为与浮点运算相关的精度损失不太明显。例如,第一个可能的修复输出:

JDK1.0
JDK1.1
JDK1.2
JDK1.3000001
JDK1.4000001
JDK1.5000001
JDK1.6000001

第二个修复输出:

JDK1.0
JDK1.1000000014901161
JDK1.2000000029802322
JDK1.3000000044703484
JDK1.4000000059604645
JDK1.5000000074505806
JDK1.6000000089406967

您可以按如下方式修改第二个修复程序来解决此问题:

for(double f=1.0; f<1.7; f=f+0.1)
    System.out.printf("JDK%.1f\n", f);
于 2013-07-01T05:07:11.093 回答
1

至少有两个问题...

首先是 Java 假定所有十进制数都是double. 这意味着您尝试使用浮点赋值,Java 会尝试警告您由于转换可能会丢失精度。

您可以通过使用 adouble来告诉编译器您希望将值视为 afloat来解决这个问题f

例如...

for(float f=1.0f;f<1.7f;f+=0.1f) {
    System.out.println("JDK"+f);
}

您将面临的下一个问题是打印出来的数字不符合您的要求,0.4实际上并不完全符合您的要求0.4

在这种情况下,您需要使用NumberFormat某种类型的 a 以您想要的方式格式化数字。

例如...

NumberFormat nf = NumberFormat.getNumberInstance();
for(float f=1.0f;f<1.7f;f+=0.1f) {
    System.out.println("JDK"+nf.format(f));
}
于 2013-07-01T05:09:10.230 回答
1

... 那么为何不

for(int f=0;f<7;f++)
    System.out.println("JDK1."+f);

此外,由于以下原因,您遇到了编译问题:

float f = 1.0; // Compilation error

0.1 默认是双精度,它必须是:

float f = 1.0f;
于 2013-07-01T05:00:53.250 回答
1

您可以使用这些代码段

for(int f=0;f<7;f=f+1)
     System.out.println("JDK 1."+f);
于 2013-07-01T05:02:42.310 回答
0

尝试这个:

public static void main(String[] args) {

        DecimalFormat df = new DecimalFormat("#.##");

        for (double f = 1.0; f < 1.7; f = f + 0.1) {

            System.out.println("JDK" + df.format(f));
        }
    }

您不能使用浮点数,但可以像这样使用双精度

于 2013-07-01T05:08:05.623 回答
0

如果它会小于 1.7 为什么不只是有

for(int f = 1; f < 7; f++){
  System.out.println("JDK1." + f);
}
于 2013-07-01T05:01:26.040 回答
0
for(double i=1.0;i<=1.7;i=i+0.1){
            BigDecimal bd = new BigDecimal(i);
            System.out.println("JDK"+bd.setScale(1,1));
        }
于 2013-07-01T05:03:13.557 回答