Я не понимаю конкретную часть следующего назначения и почему мои циклы с двумерной матрицей этого назначения не генерируют правильный вывод.
Я получаю слишком много строк и столбцов в выводе.Мне также нужна помощь с форматированием вывода, чтобы сделать его читаемым.
Назначение заключается в следующем:
public void getMultiplicationTable()
Этот метод будет использовать цикл while, чтобы попросить пользователявведите два целых числа от 1 до 10. Цикл while прекратится, если числа, предоставленные пользователем, будут в указанном диапазоне;в противном случае будет напечатано сообщение об ошибке, и пользователю будет предложено ввести еще два числа.
Первое число, данное пользователем, будет увеличено на единицу, затем использовано в качестве номера строки, а второе будетувеличивается на 1 и используется как номер столбца двумерного массива.Метод вычислит таблицу умножения и сохранит ее в массиве, а затем отобразит ее.
Например, если пользователь ввел 5 и 7, ваш код должен создать массив int с 6 строками и 8 столбцами, а затем создатьи загрузите массив с таблицей умножения.Напечатанный результат должен выглядеть примерно так:
0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7
0 2 4 6 8 10 12 14
0 3 6 9 12 15 18 21
0 4 8 12 16 20 24 28
0 5 10 15 20 25 30 35
Там, где я застреваю, есть часть, где говорится:
Первое число, данное пользователем, будет увеличено на единицузатем используется как номер строки, а второй будет увеличен на 1 и использован как номер столбца двумерного массива.Метод вычислит таблицу умножения и сохранит ее в массиве, а затем отобразит ее.
Кажется, я не могу получить введенные мною числа в качестве длины строки и столбца, а такжеprint out напечатает кратные до десяти (хотя технически я думаю, что девять, так как я не использовал + 1).Любая помощь, которая может быть оказана, будет принята с благодарностью.Вот что у меня есть:
public void getMultiplicationTable(){
Scanner numsEnter = new Scanner(System.in);
int[][] table = new int[10][10];
int numRow = 0;
int numCol = 0;
System.out.println("Please enter in two numbers: ");
while(true){
numRow = numsEnter.nextInt();
numCol = numsEnter.nextInt();
if((numRow >= 1 && numRow <= 10) && (numCol >= 1 && numCol <= 10)){
break;
}else{
System.out.println("These numbers are invalid, please enter two numbers between 0 & 10");
}
}
numRow++;
numCol++;
for(int row=0; row < table.length; row++){
for(int column = 0; column < table[row].length; column++){
System.out.print(table [row] [column] = (row) * (column) );
}
System.out.println();
}
}
Вот вывод, который я получаю, используя 5 и 7 в качестве введенных чисел:
Please enter in two numbers:
5
7
0000000000
0123456789
024681012141618
0369121518212427
04812162024283236
051015202530354045
061218243036424854
071421283542495663
081624324048566472
091827364554637281
Спасибо!