猿问

有没有办法在不“添加”空格的情况下打印出文本?

我正在研究一种输出这个的方法:


**********

*        *

*        *

*  Hello *

*        *

*        *

**********

我觉得我需要使用 .substring 方法但是卡住了。许多消息来源告诉我使用嵌套循环,这就是我所做的,除了当我尝试将我的消息放入形状时,由于字符串将星号向右移动而自然地添加了额外的空间:


***********

*         *

*         *

*  Hello    *

*         *

*         *

***********

我正在使用 java 8。int n 是放置在形状顶部和底部的 c 个字符的数量。在这种情况下,字符串消息将是你好。


public void boxThing(int n, char c, String message) {

        for(int i = 0; i <= (n/2); i++) {

            for (int j = 0; j <= n; j++) {

                if (i == 0 || i == n) {

                    System.out.print(c);

                }

                else if(j == 0 || j == n) {

                    System.out.print(c);

                }

                else if(j==n/2 && i==((n/2)/2)+1){

                    System.out.print(message);

                }

                else{

                    System.out.printf(" ");

                }

            }

            System.out.println();

        }

        for(int i =0; i<=n; i++){

            System.out.print(c);

        }

    }


江户川乱折腾
浏览 104回答 2
2回答

墨色风雨

你快到了..当“列”包含您已打印的消息时,您不需要打印任何内容。IE。“Hello”是从索引 3 的列开始的 5 个字符。这意味着,索引 3-7 已经包含“Hello”,因此,您不应在该列之间打印任何字符。

jeck猫

您必须将消息的长度与 j 相加并减去 1,例如,单词“hello”占用 5 个位置。由于 j 将在循环中为单词添加 1,因此当它到达第二个 else if 条件时,您只需将 j 设置为 j + 消息长度 -1。请参阅下文。for(int i = 0; i <= (n/2); i++) {&nbsp; &nbsp; for (int j = 0; j <= n; j++) {&nbsp; &nbsp; &nbsp; &nbsp; if (i == 0 || i == n) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.print(c);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; else if (j == 0 || j == n) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.print(c);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; else if (j == n/2 && i == ((n/2)/2)+1) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.print(message);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j = j + message.length() - 1;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.print(" ");&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; System.out.println();}for(int i = 0; i <= n; i++){&nbsp; &nbsp; System.out.print(c);}
随时随地看视频慕课网APP

相关分类

Java
我要回答