Java 如何修复循环,使代码不打印+&引用;在最后一个号码后面
我不知道如何措辞的标题,所以请随时作出更改!我被困在我制作的涉及循环的程序中。我希望输入为Java 如何修复循环,使代码不打印+&引用;在最后一个号码后面,java,Java,我不知道如何措辞的标题,所以请随时作出更改!我被困在我制作的涉及循环的程序中。我希望输入为15,这意味着代码从1开始添加,一直添加到5,预期输出为1+2+3+4+5=15,但我的代码(见下文)将打印类似1+2+3+4+5+=15。我如何去掉那个不需要的加法符号 public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); int start = keyboard.
15
,这意味着代码从1开始添加,一直添加到5,预期输出为1+2+3+4+5=15
,但我的代码(见下文)将打印类似1+2+3+4+5+=15
。我如何去掉那个不需要的加法符号
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int start = keyboard.nextInt();
int end = keyboard.nextInt();
double dend = (double)end;
double dstart = (double)start;
double n = (dend - dstart + 1);
double sum = (n/2)*(dend+dstart);
int intsum = (int)sum;
for (int i =start; i <= end; i++) {
System.out.print(i+" + ");
}
System.out.print(" = "+intsum);
}
publicstaticvoidmain(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
int start=keyboard.nextInt();
int end=keyboard.nextInt();
双齿=(双)端;
双dstart=(双)启动;
双n=(dend-dstart+1);
双和=(n/2)*(dend+dstart);
int intsum=(int)sum;
对于(int i=start;i您可以将循环减少一次,然后再次打印
for (int i =start; i < end; i++) {
System.out.print(i+" + ");
}
System.out.print(end);
System.out.print(" = "+intsum);
逻辑可以是这样的:
for (int i =start; i <= end; i++)
{
if (i > start)
System.out.print(" + ");
System.out.print(i);
}
for(int i=start;i start)
系统输出打印(“+”);
系统输出打印(一);
}
这个想法是,在循环的第一次迭代之后,只打印“+”
另一个选项是使用细木工:
StringJoiner sj = new StringJoiner(" + ");
for (int i =start; i <= end; i++)
{
sj.add( i + "" ); // converts the "i" to a string
}
System.out.print( sj.toString() );
StringJoiner sj=新的StringJoiner(“+”);
对于(inti=start;i,正如您已经提到的,可以将删除减少一个,但是在代码中,您对每个元素进行字符串连接,这并不好(因为java中字符串的不变性)
因此,最好使用一些可变字符串对象(StringBuilder/StringBuffer),如果您想使用streams实现此功能,还可以查看Collectors.joining()(在Java8中引入)。另一种解决方案是计算迭代次数并检查它是否在最后一次迭代中。如果不是,则打印一个“+”还是细木工?
StringJoiner sj = new StringJoiner(" + ");
for (int i =start; i <= end; i++)
{
sj.add( i + "" ); // converts the "i" to a string
}
System.out.print( sj.toString() );