1

I am trying to create code that takes a user-inputted number, and store it as an int. I then print out 'int' number of lines, with 'int' number of 'char' in each of them. So say for example, the inputted number was 3, it would then output

XXX
XXX
XXX

However, when I try to do this, it just gives me the number it would calculate of the ASCII number * the inputted number. This is my current code:

public static void main(String[] args) {
    Scanner kb = new Scanner (System.in);
    System.out.println("Please enter a number:");
    int number = kb.nextInt();
    kb.close();
    char letter = 'X';
    int sqnumber = number * number;
    for (int i = 0; i < number; i++) {
            System.out.println (letter * number);
    }
}

However, this just gives me:

Please enter a number:
3
264
264
264
Tunaki
  • 132,869
  • 46
  • 340
  • 423
JoeMaynard
  • 43
  • 2
  • 7
  • The line `System.out.println (letter * number);` prints 88 * 3, being 88 the ASCII value of X. What is the point of this line?: `int sqnumber = number * number;` – Orejano Jan 21 '16 at 18:35
  • Checkout this post: http://stackoverflow.com/questions/2255500/can-i-multiply-strings-in-java-to-repeat-sequences The first answer may be helpful to you – Brian Jan 21 '16 at 18:35

5 Answers5

1

There is repeat() method in String object(Appeared in Java 11). Example:

System.out.print("XXX\n".repeat(4));
0

Nested loop:

for (int i = 0; i < number; i++) {
    for (int j = 0; j < number; j++) {
        System.out.print(letter + "");
    }
    System.out.println();
}
Avalanche
  • 386
  • 2
  • 10
0

char is an integral type in Java. So you are multiplying ASCII value of 'X' with 3 each time. Edit your loop to -

    for (int i = 0; i < number; i++) {
        for (int j = 0; j < number; j++) {
            System.out.print(letter);
        }
        System.out.println();
    }
Mandeep Rajpal
  • 1,667
  • 2
  • 11
  • 16
0

For best performance, you probably want something like this:

private static void printSquare(int size) {
    char[] line = new char[size];
    Arrays.fill(line, 'X');
    for (int i = 0; i < size; i++)
        System.out.println(line);
}
Andreas
  • 154,647
  • 11
  • 152
  • 247
-1

You need to have nested for loops and you are not using char Xcorrectly.

Try this

public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        System.out.println("Please enter a number:");
        int number = kb.nextInt();
        kb.close();
        char letter = 'X';
        int sqnumber = number * number;
        for (int i = 0; i < number; i++) {
            for (int j = 0; j < number; j++) {
                System.out.print(letter);
            }
            System.out.println();
        }
    }

Output

Please enter a number:
4
XXXX
XXXX
XXXX
XXXX
RockAndRoll
  • 2,247
  • 2
  • 16
  • 35