更新幂整数,使其在一行中
Update powered integers so its in one line
我的代码逻辑有效,但我遇到的问题在 System.out.println();
行。
我的代码的作用示例:
这将根据您在输入参数 (n) 中输入的数字按顺序生成整数,并将它们乘以您在输入参数 (n) 中输入的值的幂。
这意味着下面的输入参数n等于3。
totalCue(3)
= 1^3 + 2^3 + 3^3 这显然等于 36
我希望我的输出是这样的 1 + 8 + 27 = 36
但实际上是这样的
1 + = 1
8 + = 9
27 + = 36
我该怎么做才能解决这个问题或仅更新 1 行中的所有数字。顺便说一句:我也试过只做 System.out.print();
但它没有用。
我的代码如下:
public class CUETOTAL {
public int totalCue(int n)
{
int result = 0;
for (int x = 1; x <= n; x++){
result += (int)Math.pow(x, n);
System.out.print((int)Math.pow(x, n)+" + " + " = " +result);
}
return result;
}
public static void main(String args[]){
CUETOTAL n = new CUETOTAL();
n.totalCue(3);
}
}
- 将您的结果附加到列表中
- 连接列表中的元素以获得 LHS
- 对列表中的元素求和得到RHS
List<Integer> list = new ArrayList<>();
// compute powers and append to list
for (int x = 1; x <= n; x++){
list.add((int) Math.pow(x, 3));
}
// generate the LHS by concatenating with " + "
String prefix = list.stream().map(String::valueOf).collect(Collectors.joining(" + "));
// print the LHS and RHS sum
System.out.println(prefix + " = " + list.stream().reduce(Integer::sum).get());
你的逻辑有问题。您不想每次都打印“=结果”。
String plus = "";
for (int x = 1; x <= n; x++){
int term = (int)Math.pow(x, n);
result += term;
System.out.print(plus + term);
plus = " + ";
}
System.out.println(" = " + result);
两个注意事项:
我添加了一个额外的变量term
- 不要做两次相同的计算。
字符串 'plus' 非常适合在第一个术语之前不打印任何内容,然后在每个后续术语上打印“+”。
使用 ternar 进行字符串连接。
for (int x = 1; x <= n; x++){
int pow = (int)Math.pow(x, n);
result += pow;
String concat = x == n ? " = " : " + ";
System.out.print(pow + "" + concat);
}
System.out.print(result);
我的代码逻辑有效,但我遇到的问题在 System.out.println();
行。
我的代码的作用示例:
这将根据您在输入参数 (n) 中输入的数字按顺序生成整数,并将它们乘以您在输入参数 (n) 中输入的值的幂。
这意味着下面的输入参数n等于3。
totalCue(3)
= 1^3 + 2^3 + 3^3 这显然等于 36
我希望我的输出是这样的 1 + 8 + 27 = 36
但实际上是这样的
1 + = 1
8 + = 9
27 + = 36
我该怎么做才能解决这个问题或仅更新 1 行中的所有数字。顺便说一句:我也试过只做 System.out.print();
但它没有用。
我的代码如下:
public class CUETOTAL {
public int totalCue(int n)
{
int result = 0;
for (int x = 1; x <= n; x++){
result += (int)Math.pow(x, n);
System.out.print((int)Math.pow(x, n)+" + " + " = " +result);
}
return result;
}
public static void main(String args[]){
CUETOTAL n = new CUETOTAL();
n.totalCue(3);
}
}
- 将您的结果附加到列表中
- 连接列表中的元素以获得 LHS
- 对列表中的元素求和得到RHS
List<Integer> list = new ArrayList<>();
// compute powers and append to list
for (int x = 1; x <= n; x++){
list.add((int) Math.pow(x, 3));
}
// generate the LHS by concatenating with " + "
String prefix = list.stream().map(String::valueOf).collect(Collectors.joining(" + "));
// print the LHS and RHS sum
System.out.println(prefix + " = " + list.stream().reduce(Integer::sum).get());
你的逻辑有问题。您不想每次都打印“=结果”。
String plus = "";
for (int x = 1; x <= n; x++){
int term = (int)Math.pow(x, n);
result += term;
System.out.print(plus + term);
plus = " + ";
}
System.out.println(" = " + result);
两个注意事项:
我添加了一个额外的变量
term
- 不要做两次相同的计算。字符串 'plus' 非常适合在第一个术语之前不打印任何内容,然后在每个后续术语上打印“+”。
使用 ternar 进行字符串连接。
for (int x = 1; x <= n; x++){
int pow = (int)Math.pow(x, n);
result += pow;
String concat = x == n ? " = " : " + ";
System.out.print(pow + "" + concat);
}
System.out.print(result);