有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何删除结尾处的逗号

我正在编写一个简单的java代码,它将两个整数作为min和max,将第三个整数作为除数,它会发现它们之间的所有数字都可以被第三个整数整除,这很好,但在输出中我无法去掉最后一个逗号

Scanner scanner = new Scanner(System.in);
    System.out.print("Enter the first number: ");
    int a = scanner.nextInt();
    System.out.print("Enter the second number: ");
    int b = scanner.nextInt();
    System.out.print("Enter the divisor: ");
    int d = scanner.nextInt();
    for(int i=a; i<=b; i++) {
        if(i%d == 0)
            System.out.print(i+", ");
    }

我怎么做呢


共 (5) 个答案

  1. # 1 楼答案

    如果是最后一个数字,可以使用substring去掉结尾的空格和逗号。它不像Unmigated的解决方案那样优雅,但它应该可以工作:

    String validNumbers = "";
    for(int i=a; i<=b; i++) {
        if(i%d == 0)
        validNumbers += i + ", ";
    }
    if (validNumbers != "") {
        validNumbers = validNumbers.substring(0, validNumbers.length() - 2);
    }
    System.out.print(validNumbers);
    
  2. # 2 楼答案

    可以使用“作为布尔值”来控制逗号的打印

    boolean addComma = false;
    for (int i=a; i<=b; i++) {
        if (i%d == 0) {
            System.out.print((v ?  "," : "") + i);
            addComma = true;
        }
    }
    
  3. # 3 楼答案

    只有当逗号不是最后一个元素时,才可以使用if语句打印逗号

    if(i%d == 0){
        System.out.print(i);
        if(((i/d)+1)*d <= b) System.out.print(", ");
    }
    
  4. # 4 楼答案

    我更喜欢在适当的情况下在事情之前写逗号,而不是在事情之后写逗号来避免这个问题。与知道自己什么时候做最后一件事相比,知道自己什么时候做第一件事似乎更简单

    String sep = ""; // no separator before first print
    for (int i=a; i<=b; i++) {
        if (i%d == 0) {
            System.out.print(sep + i);
            sep = ", "; // separator for every following print
        }
    }
    
  5. # 5 楼答案

    对于这类问题,^{}特别有用:

    StringJoiner out = new StringJoiner(",");
    for(int i=a; i<=b; i++) {
        if(i%d == 0)
            out.add(Integer.toString(i));
    }
    System.out.println(out);