为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

江户川乱折腾 2023-04-26 14:44:39
我正在研究一种输出这个的方法:***********        **        **  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);        }    }
查看完整描述

2 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

你快到了..

当“列”包含您已打印的消息时,您不需要打印任何内容。

IE。“Hello”是从索引 3 的列开始的 5 个字符。这意味着,索引 3-7 已经包含“Hello”,因此,您不应在该列之间打印任何字符。


查看完整回答
反对 回复 2023-04-26
?
jeck猫

TA贡献1909条经验 获得超7个赞

您必须将消息的长度与 j 相加并减去 1,例如,单词“hello”占用 5 个位置。由于 j 将在循环中为单词添加 1,因此当它到达第二个 else if 条件时,您只需将 j 设置为 j + 消息长度 -1。请参阅下文。


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);

            j = j + message.length() - 1;

        }

        else {

           System.out.print(" ");

        }

    }

    System.out.println();

}

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

    System.out.print(c);

}


查看完整回答
反对 回复 2023-04-26
  • 2 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信