【问题标题】:How to I equally space integers in a loop?如何在循环中平均间隔整数?
【发布时间】:2026-01-12 03:30:02
【问题描述】:

我必须根据用户的输入打印一个乘法表。 到目前为止,这是我的代码:

import java.util.Scanner;
public class problem7
{
public static void main (String args[])
{

int n1,n2,n3;
int i1, i2;
char again;
Scanner input=new Scanner(System.in);


System.out.println("Please enter the starting number:");
n1=input.nextInt();
System.out.println("\nPlease enter the ending number:");
n2=input.nextInt();

System.out.print("\n     ");
    for (i1=1; i1<=10; i1++){

        System.out.print("    "+i1);
    }
    for (n1=n1; n1<=n2; n1++ ){
        System.out.print("\n    "+n1);

        for (i2=1; i2<=10; i2++){
            n3=n1*i2;
            System.out.print("    "+n3);

        }
    }
}
}

这是输出:

Please enter the starting number:
2

Please enter the ending number:
4

         1    2    3    4    5    6    7    8    9    10
    2    2    4    6    8    10    12    14    16    18    20
    3    3    6    9    12    15    18    21    24    27    30
    4    4    8    12    16    20    24    28    32    36    40

一旦有一个具有 2 个有效数字的整数,间距就会变得混乱。我该如何解决?谢谢!

【问题讨论】:

  • 使用System.out.printf。查看here 了解更多示例

标签: java for-loop integer


【解决方案1】:

通俗易懂的方式:如果小于10,打印一个额外的空格。

System.out.print("\n    ");
if(n1 < 10) System.out.print(" ");
System.out.print(n1);

更短的方法:String.format 可以用几种不同的方式格式化数字,其中一件事就是在开头自动添加空格:

System.out.println("\n    " + String.format("%2d", n1));
// alternatively:
System.out.println(String.format("\n    %2d", n1));

或者,System.out.printf 结合了 formatprintln 调用:

System.out.printf("\n    %2d", n1);

记得在打印i1n3时做同样的事情!

【讨论】:

    【解决方案2】:

    http://www.tutorialspoint.com/compile_java_online.php

    import java.util.Scanner;
    public class HelloWorld{
    public static void main(String []args){
        int n1,n2,n3;
        int i1, i2;
        char again;
        Scanner input=new Scanner(System.in);
        System.out.println("Please enter the starting number:");
        n1=input.nextInt();
        System.out.println("\nPlease enter the ending number:");
        n2=input.nextInt();
        System.out.print("\n     ");
        for (i1=1; i1<=10; i1++){   
            System.out.print(String.format("    %2d",i1));
        }
        for (n1=n1; n1<=n2; n1++ ){
            System.out.print("\n    "+n1);
            for (i2=1; i2<=10; i2++){
                n3=n1*i2;
                System.out.print(String.format("    %2d", n3));  
            }
        }
    }
    }
    

    【讨论】:

    • 什么你改变了,为什么
    【解决方案3】:

    只要你想放一些空间就用\t ..试试下面的代码

      public static void main(String[] s) {
        int n1, n2, n3;
        int i1, i2;
        char again;
        Scanner input = new Scanner(System.in);
    
        System.out.println("Please enter the starting number:");
        n1 = input.nextInt();
        System.out.println("\nPlease enter the ending number:");
        n2 = input.nextInt();
    
        System.out.print("\n\t");
        for (i1 = 1; i1 <= 10; i1++) {
    
            System.out.print("\t" + i1);
        }
        for (n1 = n1; n1 <= n2; n1++) {
            System.out.print("\n\t" + n1);
    
            for (i2 = 1; i2 <= 10; i2++) {
                n3 = n1 * i2;
                System.out.print("\t" + n3);
    
            }
        }
     }
    

    此代码输出将是

        1   2   3   4   5   6   7   8   9   10
    1   1   2   3   4   5   6   7   8   9   10
    2   2   4   6   8   10  12  14  16  18  20
    3   3   6   9   12  15  18  21  24  27  30
    4   4   8   12  16  20  24  28  32  36  40
    

    【讨论】:

      【解决方案4】:
      import java.util.Scanner;
      public class HelloWorld
      {
      public static void main (String args[])
      {
      
      int n1,n2,n3;
      int i1, i2;
      char again;
      Scanner input=new Scanner(System.in);
      
      
      System.out.println("Please enter the starting number:");
      n1=input.nextInt();
      System.out.println("\nPlease enter the ending number:");
      n2=input.nextInt();
      
      System.out.print("\n     ");
          for (i1=1; i1<=10; i1++){
              if(i1>9)
                  System.out.print("   "+i1);
                  else
              System.out.print("    "+i1);
          }
          for (n1=n1; n1<=n2; n1++ ){
      
              System.out.print("\n    "+n1);
      
              for (i2=1; i2<=10; i2++){
                  n3=n1*i2;
                  if(n3>9)
                  System.out.print("   "+n3);
                  else
                  System.out.print("    "+n3);
      
              }
          }
      }
      }
      

      这就是它应该的样子。只需删除一个空格,因为数字中有 2 个字符大于 9。因此,要以正确的方式对其进行格式化,您需要做的就是在打印时删除一个空格。

      【讨论】:

      • 请不要只说“这是你应该做的”。请解释为什么以及你改变了什么