Search code examples
javaprintingshapesascii-art

Writing a word in a rhombus/diamond shape in Java


I have to write a program that asks a word and then prints it in a rhombus/diamond shape, like this:

Word: Hello
H
He
Hel
Hell
Hello
 ello
  llo
   lo
    o

I tried something but I really could use some help if someone could, I tried something like this:

import java.util.Scanner;

public class Rhombus {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.print("Word: ");
        String word = sc.nextLine();
        int wordLength = word.length();

        for (int i = 0; i < wordLength; i++) {
            System.out.println(word.substring(0, i));

        }
    }
}

Solution

  • Here you are:

    public static void main(String[] args) {
        printRhombusText("yolobird");
    }
    
    public static void printRhombusText(String s) {
        // top part
        for (int i = 1; i <= s.length(); ++i) {
            System.out.println(s.substring(0, i));
        }
        // bottom part
        for (int i = 1; i <= s.length(); ++i) {
            // print out the space
            for (int y = i; y > 0; --y) {
                System.out.print(" ");
            }
            System.out.println(s.substring(i));
        }
    }
    

    output:

    y
    yo
    yol
    yolo
    yolob
    yolobi
    yolobir
    yolobird
     olobird
      lobird
       obird
        bird
         ird
          rd
           d
            
    

    Want to add user input? Here:

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        do {
            System.out.print("Input your text: ");
            String input = scanner.nextLine();
            printRhombusText(input);
            scanner.reset();
            System.out.print("You want to do one more? (y/n): ");
        } while (scanner.nextLine().trim().equals("y"));
    }
    

    output:

    Input your text: kiet
    k
    ki
    kie
    kiet
     iet
      et
       t
        
    You want to do one more? (y/n): y
    Input your text: ahihi
    a
    ah
    ahi
    ahih
    ahihi
     hihi
      ihi
       hi
        i
         
    You want to do one more? (y/n): n