2013-07-14 2 views
0

Привет, я новичок, поэтому, пожалуйста, не используйте какие-либо сложные вещи. Вот SS, что я имею в виду. http://prntscr.com/1ffec0 на данный момент не беспокойтесь о том, что цифры вертикально и горизонтально отображают, какие столбцы и номер строки они есть. У меня есть код, но я совершенно смущен тем, как это сделать и как их умножить.Создание базовой таблицы умножения в java с использованием цикла

import java.util.Scanner; 

public class test 
{ 
    public static void main(String[] args)  
    { 
     Scanner keyboard = new Scanner (System.in); 
     int x=0, y=0; 
     System.out.print("Enter rows "); 
     x = keyboard.nextInt(); 
     System.out.print("Enter columns "); 
     y = keyboard.nextInt(); 

     for (int i=1; i<=x; i++) 
     { 
      for (int j=1; j<=y; j++) 
      { 
       System.out.print(" "+i+j); 
      } 
      System.out.println(); 
     } 
    } 
} 
+2

Вы имеете в виду 'i * j'? –

+0

О, отличный пример! Возможно, вы заметили, что для значений, похоже, печатаются «нечетные» значения. Это происходит из-за того, что вы выполняете 'i' в String, а затем конкат' j' в String. Итак, для примера, если 'i' равно 1 и' j' равно 2, вы получите '12'. –

ответ

0

Изменение I + J через г * J кстати вы печатаете только половину матрицы

4

Я не собираюсь давать вам ответ прямо, но я собираюсь помочь вы лучше понимаете проблему с некоторым псевдокодом. Предположим, что ваш х-диапазон идет от 1 до 3, и ваша гамма-диапазон также идет от 1 до 3.

Ты правильно установить 2 петли

Loop x = 1 to 3 
    Loop y = 1 to 3 
     //Do stuff 
    End innerloop 
End outerloop 

Теперь рассмотрим значения, которые будут напечатаны (1, 1), (1, 2), (1, 3), (2, 1), (2, 2) и (1), (2, 2) и так и до (3, 3);

Очевидно, что вы хотите, чтобы продукт, который будет отображаться, таким образом, создать некоторую переменную г = х * у внутри петель

//Do stuff: 
z = x * y 
Print z + " " 

печати г и оставить место, потому что вы хотите напечатать следующее значение без него будучи смежным с первым значением.

Это будет печатать все ваши решения в прямой, одной линии. Но вы хотите, чтобы это было в матрице, очевидно. Ответ заключается в простом простом изменении, взяв только одну строку кода. После каждого полного цикла вашего внутреннего цикла вы по существу заканчиваете одну строку умножения (подумайте о том, почему). Таким образом, решение состоит в том, что после того, как ваш внутренний цикл завершается, перед переходом к следующему значению внешнего цикла для x вы хотите напечатать новую строку. В целом у нас есть что-то вроде:

Loop x = 1 to 3 
    Loop y = 1 to 3 
     z = x * y 
     Print z + " " 
    End innerloop 
    Print NewLine // "\n" is the way to do that 
End outerloop 

И все готово. Вам просто нужно поместить его в код, а также принять ввод пользователя вместо жесткого кодирования диапазона от 1 до 3 или что угодно. Это тривиально, и я уверен, что вы сможете собрать его вместе.

0

Вам нужно использовать «*» вместо «+»?

Как это:

public static void print(int x, int y) { 
    for (int i = 1; i <= x; i++) { 

     for (int j = 1; j <= y; j++) { 

      System.out.print(" " + i * j); 
     } 
     System.out.println(); 

    } 
} 

И после того, что вы можете думать о форматировании !? Мой совет: подумайте о длине самого длинного значения (всегда x * y) и «зарезервируйте» для этого достаточно места!

+0

ha работал, но я клянусь, я попробовал это раньше, и это не сработало – colors

+0

, может быть, вы перепутали с «+»? вам нужно, чтобы он был на стороне этого термина, чтобы объединить строки «» и i * j. – Klumbe