java—在循环中打印值时防止尾随字符

omtl5h9j  于 2021-07-05  发布在  Java
关注(0)|答案(4)|浏览(284)

这个问题在这里已经有答案了

仅在值之间使用分隔符打印(3个答案)
上个月关门了。
我的任务是为java做一个循环问题,但我目前在如何显示数字的阶乘方面遇到了一个问题。例如,1x2x4x5=120。
我就快到了,但我似乎不知道该怎么做,或者有没有任何可能的方法来显示一个数字的阶乘,因为在5的末尾总是有一个额外的“x”。
这是我的密码:

import java.util.*;
public class trylangpo2 {

    public static void main(String[] args) {
        Scanner input = new Scanner (System.in);
        int fctr;
        System.out.println ("number");
        fctr = input.nextInt();

        for (int i = 1; i <=fctr; i++){
            System.out.print(i);

            int j;
            for (j =1; j <=1 ; j++){
                System.out.print("*");
            }
        }
    }   
}

输出示例:

1x2x3x4x5x
nzk0hqpo

nzk0hqpo1#

你需要把*的打印条件。不打印**如果 i == fctr . 你不需要额外的循环 j . 具体如下:

public static void main(final String[] args) {
    final Scanner input = new Scanner(System.in);
    int fctr;
    System.out.println("number");
    fctr = input.nextInt();

    //    IntStream.range(1, fctr).

    long factorial = 1;
    for (int i = 1; i <= fctr; i++) {
      factorial = factorial * i;
      if (i == fctr) {
        System.out.print(i);
      } else {
        System.out.print(i + "*");
      }
    }

    System.out.print("=" + factorial);
  }
z9smfwbn

z9smfwbn2#

我总是使用这样的结构

String sep="";
for (...) {
   System.out.print(sep);
   System.out.print(payload);
   sep="x";
}
3bygqnnd

3bygqnnd3#

你的循环 (j =1; j <=1 ; j++) 可以移除。它只循环一次,所以,写吧 System.out.print("*") . 不需要循环
如果你仔细想一想,你就要把数字和数字打印出来 * 一直都是,除非是最后一个号码( fctr )
这样写吧:

Scanner input = new Scanner (System.in);
int fctr;
System.out.println ("number");
fctr = input.nextInt();

for (int i = 1; i <=fctr; i++){
    System.out.print(i);

    if(i<fctr) {
        System.out.print("*");
    }
}
goqiplq2

goqiplq24#

尝试添加一个条件,如果不是循环结束,则添加开始,如果是结束,则只打印数字:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int fctr;
    System.out.println("number");
    fctr = input.nextInt();

    for (int i = 1; i <= fctr; i++) {
        if (i < fctr) {
            System.out.print(i + " * ");
        } else {
            System.out.print(i);
        }
    }
}

相关问题