2015-02-13 2 views
1

Мне нужно распечатать таблицу умножения на основе ввода пользователя. Вот мой код до сих пор:Как равномерно целые числа в цикле?

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 значащих цифр. Как это исправить? Спасибо!

+2

Используйте 'System.out.printf'. Посмотрите [здесь] (http://www.homeandlearn.co.uk/java/java_formatted_strings.html) для получения дополнительных примеров – MadProgrammer

ответ

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 объединяет format и println звонки:

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

Не забывайте делать то же самое при печати i1 и n3!

0

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)); 
     } 
    } 
} 
} 
+0

* Что * вы изменили и * почему *? – Ascalonian

0

Просто используйте \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 
0
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. Поэтому, чтобы правильно отформатировать его, все, что вам нужно сделать, это удалить пространство при печати.

+2

Просьба не просто сказать «это то, что вам следует делать». Пожалуйста, объясните * почему *, а также то, что вы изменили – Ascalonian

Смежные вопросы