打印带有框架的消息

时间:2017-02-01 16:14:23

标签: java

用户键入消息以及同一句子中的所需内容。

command > message A long message where there cant be more than 56 characters.

我想在" message"之后接受用户输入的任何内容。并用一个盒子包围它:

############################################################
#                                                          #
# A LONG MESSAGE WHERE THERE CANT BE MORE THAN 56 CHARACTE #
#                                                          #
############################################################

框架的宽度应为60个空格,并且在消息之前和之后至少应有一个空格。邮件的长度不能超过56个字符。

这是我尝试的但是我一直收到错误:StringIndexOutOfBoundsException ..

private void printBoxedMessage() {
    String shorterString = nextObjective.substring(8).toUpperCase();
    if (!(shorterString.equals(null))) {
        for (int n = 0; n < 5; n++) {
            if (n == 0 || n == 4) {
                for (int m = 0; m < 60; m++) {
                    System.out.print("#");
                }
            } else if (n == 1 || n == 3) {
                for (int y = 0; y < 60; y++) {
                    if (y == 0 || y == 59) {
                        System.out.print("#");
                    } else if (y > 0 && y < 60) {
                        System.out.print(" ");
                    }
                }
            } else if (n == 2) {
                for (int i = 0; i < 60; i++) {
                    if (i == 0 || i == 59) {
                        System.out.print("#");
                    } else if (i == 1 || i == 58) {
                        System.out.print(" ");
                    } else if (i == 2) {
                        System.out.printf("%56s", shorterString.substring(0, 56));
                    }
                }
            }
        }
    }

}

3 个答案:

答案 0 :(得分:1)

我要处理的方法是首先检查输入的字符串是否超过56个字符。如果您不希望它,请让用户重新输入。另外,如果您希望周围区域框架与输入的长度相匹配,那么只需创建一个for循环以匹配输入消息的长度。

public class PrintBoxedMethod {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    Boolean lengthCheck = false;

    System.out.println("Enter a message up to 56 characters");
    String message = input.nextLine();

    while(lengthCheck == false){
    if(message.length()> 56){
        System.out.println("Message is too long, Enter a message up to 56 characters");
        message = input.nextLine();
    } else lengthCheck = true;
    }
    for(int i = 0; i<message.length() + 4;i++){
        System.out.print("#");
    }
    System.out.println();
    System.out.print("# ");
    System.out.print(message);
    System.out.println(" #");
    for(int i = 0; i<message.length() + 4;i++){
        System.out.print("#");
    }
}

}

答案 1 :(得分:0)

不要假设字符串长度。 (更正格式) 使用Math.min()为大小创建一个int,然后当你得到一个子字符串时,使用大小而不是56.例如,在你的第一行和最后一行,如果你有一个短于56的字符串(nextObjective)或者8?

  int size = Math.min(incomingString.length,56);
     ...
  System.out.printf("%56s", shorterString.substring(0, Math.min(size,56)));

答案 2 :(得分:0)

你的代码真的很难理解(至少对我而言)没有任何评论来解释。让我们尝试一种更直接的方法:

public static void boxMessage(String message) {
    // first line
    int length = message.length();
    for (int i = 0 ; i < 60 ; i++) {
        System.out.print("#");
    }
    // second line
    System.out.print("\n#");
    for (int i = 0 ; i < 58 ; i++) {
        System.out.print(" ");
    }
    System.out.print("#\n");
    // third line. Left spaces is the number of spaces on the left of the message.
    System.out.print("# ");
    int leftSpaces = (58 - message.length()) / 2;
    for (int i = 0 ; i < leftSpaces ; i++) {
        System.out.print(" ");
    }
    System.out.print(message);
    for (int i = 0 ; i < 58 - leftSpaces - length ; i++) { // 58 - leftSpaces - length is number of spaces the right side should have.
        System.out.print(" ");
    }

    System.out.print(" #\n");
    // fourth line
    System.out.print("#")
    for (int i = 0 ; i < 58 ; i++) {
        System.out.print(" ");
    }
    System.out.print("#\n");
    // last line
    for (int i = 0 ; i < 60 ; i++) {
        System.out.print("#");
    }
}

用法:

boxMessage("A LONG MESSAGE WHERE THERE CANT BE MORE THAN 56 CHARACTE");

打印:

############################################################
#                                                          #
# A LONG MESSAGE WHERE THERE CANT BE MORE THAN 56 CHARACTE #
#                                                          #
############################################################