在我用Java编写的简单程序中,如果不显示0-10的平方根和立方数,就不能显示结果,而后不显示小数点吗?我该如何摆脱呢?
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package assignmenttwo;
/**
*
* @author JordanSimps
*/
public class AssignmentTwo {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
double Square;
double Cube;
for ( int Number = 0; Number <= 10; Number++ ) {
Square = Number * Number;
Cube = Number * Number * Number;
System.out.printf("%-10s %-10s %-10s\n", "Number", "Square", "Cube");
System.out.printf("%-10s %-10s %-10s\n", Number, Square, Cube);
}
}
}
解决方法:
解决此问题的一种非常简单的方法是将Square和Cube的类型更改为int而不是double. (但是请确保您的结果将始终是Integer …)
您还可以使用DecimalFormat对象,这很容易理解.
(它看起来也更像Java…您的感觉有点像C.)
// this decimal format will display number after the dot only if there is.
// 1256.200 -> 1,256.2 whereas 152.0 -> 152
DecimalFormat df2 = new DecimalFormat( "###,##0.###" );
System.out.println("formated square : "+df2.format(Square));
编辑以遵循您的示例:
public static void main(String[] args) {
double Square;
double Cube;
DecimalFormat df2 = new DecimalFormat( "###,##0.###" );
for ( int Number = 0; Number <= 10; Number++ ) {
Square = Number * Number;
Cube = Number * Number * Number;
System.out.println("Number \tSquare \tCube");
System.out.println(Number + "\t" + df2.format(Square) + "\t" + df2.format(Cube));
}
}
一些说明:
>使用第一种方法,可以更改程序STORES,数据的方式(选择整数或双精度(双精度浮点数)).
在一种情况下,您的数据存储为整数,因此不能是十进制值,在另一种情况下,它接受十进制值.
现在,这取决于您要的内容…如果您确定不会将任何十进制值添加到正方形和立方体,并且它们不会溢出整数类型(值< 2 ^ 31),则可以使用第一种方法
>使用第二种方法,您只是在更改计算机的显示方式.
因此,您的数字始终存储为双精度浮点,因此它可以接受更多值,并且您的程序将适合更多的用例.
然后,当您想向用户显示您的号码时,您告诉计算机(使用DecimalFormat对象)要如何操作.
在我的示例中,我说过只有在要显示的有效位数小数点后才要3.您可以查看here的更多详细信息
恕我直言,我建议第二种方法.