user2989139
user2989139

Reputation: 71

String Method and loops

I have a program I'm working on that I'm stuck on and can't really figure out. Basically, I'm supposed to input a word, and have the word be encased in a box of asterisks, which is the main objective. The actual prompt says: Read a string from the keyboard. Output the string centered inside of a box as shown below. The box needs to be resized on each run to assure that it has the correct spacing.

Ex.

enter image description here

Here is my code:

import java.io.*;
import java.util.*;
public class Prog600a
{
    public static void main(String[] args)
    {
            for(int i = 1; i<=3; i++)
            {
                Scanner kbReader = new Scanner(System.in); //Allows input
                System.out.print("Enter a string: "); 
                String word1 = kbReader.nextLine();
                int len1 = word1.length();
            for(int x = 0; x<=len1; x++)
            {
                System.out.print("*");
            }
            System.out.println();
            System.out.print("*");
            for(int x = 0; x<len1; x++)
            {
                System.out.print("\t");
            }
            System.out.print("*");
            System.out.println();
            System.out.println("* " + word1 + " *");
            System.out.print("*");
            for(int x = 0; x<len1; x++)
            {
                System.out.print("\t");
            }
            System.out.print("*");
            System.out.println();
            for(int x = 0; x<len1; x++)
            {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

I'm using the string method length to determine how long the string is, and print asterisks according to that. However, I can't seem to get the spacing, and my output looks nothing like the one shown. I've been experimenting with the code for a few hours (which is why it's a bit long and may be inefficient ), but can't really seem to get it. The spacing isn't right, and I don't really know how to correctly resize the box on each run. Can someone please provide some guidance? Thanks for all the help!

Upvotes: 1

Views: 328

Answers (2)

CPS
CPS

Reputation: 537

Stack Overlow isn't for doing your homework for you. But, I will give you some pointers:

Look at repeat.

A tab character is 4-8 characters long, depending on how you're viewing it. '*' is one character long.

Upvotes: 0

Vincent van der Weele
Vincent van der Weele

Reputation: 13187

I spot only tiny problems:

  1. You don't print enough asterisks in the top and the bottom (make it < len1 + 4)
  2. You print tabs instead of spaces (change "\t" to " ").
  3. You don't print enough spaces, change those loops to < len + 2

That's all. My output for input test:

********
*      *
* test *
*      *
********

Upvotes: 5

Related Questions