我写了这个程序打印一个显示x的幂的表,现在我必须修改它,以便它打印每行的总和,在每行之后,我不知道从哪里开始。我想把数字放到一个数组中并添加它们,但这看起来太复杂了。
public class table {
public static void main(String[] args)
{
final int NMAX = 5;
final double XMAX = 10;
for(int n = 1; n <= NMAX; n++)
{
System.out.printf("%10d", n);
}
System.out.println();
for(int n = 1; n <= NMAX; n++)
{
System.out.printf("%10s", "x ");
}
System.out.println();
for(double x = 1; x <= XMAX; x++)
{
for (int n = 1; n <= NMAX; n++)
{
System.out.printf("%10.0f", Math.pow(x, n));
}
System.out.println();
}
}
}
答案 0 :(得分:3)
final int NMAX = 6;
final double XMAX = 10;
for(int n = 1; n <= NMAX; n++)
{
System.out.printf("%10d", n);
}
System.out.println();
for(int n = 1; n <= NMAX; n++)
{
System.out.printf("%10s", "x ");
}
System.out.println();
int counter = 0;
for(double x = 1; x <= XMAX; x++)
{
for (int n = 1; n <= NMAX; n++)
{
if(n == 6){
System.out.printf("%10d",counter);
counter = 0;
}else{
System.out.printf("%10.0f", Math.pow(x, n));
counter += Math.pow(x, n);
}
}
System.out.println();
}
答案 1 :(得分:2)
您可以实现您想要的更改程序的最后一部分(如果NMAX始终是列数):
double pow, sum;
for(double x = 1; x <= XMAX; x++)
{
sum = 0;
for (int n = 1; n < NMAX; n++)
{
sum += (pow = Math.pow(x, n));
System.out.printf("%10.0f", pow);
}
System.out.printf("%10.0f", sum);
System.out.println();
}
此行可能令人困惑:
sum += (pow = Math.pow(x, n));
正如here所解释的,赋值运算符返回指定的值。在这种情况下,我们会将Math.pow(x, n)
的结果分配给变量pow
,然后将相同的值添加到变量sum
。
这样您只需拨打Math.pow
一次,因为您将值保存在变量中以便稍后打印。
这样做可以让您将变量NMAX
更改为任何值,而无需更改程序中的任何其他内容。