Привет всем, я в настоящее время работаю над домашним заданием, где мы должны предложить пользователю, какой объект он хочет отобразить (прямоугольник или треугольник), а затем запросить у пользователя высоту и ширину объекта. Наконец, мы приглашаем пользователя для координат х и у, где начать «рисование объекта»
Мы создаем «canvas», используя массив [20] [20] char, и мы используем этот массив для хранения и последующего отображения char для «рисования» объекта.
Проблема: Если я выберу x = 0, y = 0 для выбранных пользователем координат, все работает нормально. Если я выберу любое другое значение для x и y, то все выходные данные будут пустыми. Код ниже может кто-нибудь дать совет о том, что происходит? Спасибо за помощь.
import java.util.*;
public class Multidimensional {
public static char[][]canvas = new char[20][20];
public static int height, width, x, y;
public static char userChar;
public static void setRectangle()
{
Scanner kb = new Scanner(System.in);
System.out.println("Enter height");
height = kb.nextInt();
System.out.println("enter Width");
width = kb.nextInt();
System.out.println("Enter character");
String input = kb.next();
userChar = input.charAt(0);
System.out.println("Enter location on canvas (x and y coordinate)");
x = kb.nextInt();
y = kb.nextInt();
//loop for the rows
for(int row=0; row<= height-1; row++){
//loop for the columns
for(int column=0;column<=width-1;column++ ){
canvas[row+y][column+x] = userChar;
//System.out.print("ROW+Y= " + (row+y));
//System.out.print(" COLUMN+X= " + (column+x));
}
}
//displaying the array (for test purposes, not in final code)
for(int row=0 ; row< 20; row++){
for(int column=0; column <20; column++){
System.out.print(canvas[row][column]);
}
System.out.println();
}
}
public static void main(String[] args) {
String userChoice;
Scanner kb =new Scanner(System.in);
boolean userQuit = false;
while(userQuit ==false){
System.out.println("1. Type S to draw a rectangle.");
System.out.println("2. Type T to draw a triangle.");
System.out.println("3. Type D to display.");
System.out.println("4. Type Q to quit.");
userChoice = kb.next();
if(userChoice.equalsIgnoreCase("s"))
{Multidimensional.setRectangle();
}
else if(userChoice.equalsIgnoreCase("q"))
{break;}
}
}
}