Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复循环,使代码不打印+&引用;在最后一个号码后面_Java - Fatal编程技术网

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() );