沧海一粟hh 发表于 2021-7-22 16:11

Java语言如何将一条语句打印在三行上且单词居中?

Java小白,笨办法尝试失败望大神指教。

Goldrepo 发表于 2021-7-22 18:06

居中 必须要有参考物,如果没有参考物,居不居中就没意义了。
假如Knowle is Power要分三行居中,那必须有个参考物,
假如参考物是20个"-"组成的虚线:--------------------
那它们居中就是这样子的,请问LZ是不是想要这种效果呢?

这是代码:
public class Demo {

    public static void main(String[] args) {
      //打印虚线
      printMsg("", 20, '-', "");
      printMsg("Knowledge", 20, ' ', "CENTER");
      printMsg("is", 20, ' ', "CENTER");
      printMsg("Power", 20, ' ', "CENTER");
      //打印虚线
      printMsg("", 20, '-', "");
      printMsg("Knowledge", 20, ' ', "LEFT");
      printMsg("is", 20, ' ', "LEFT");
      printMsg("Power", 20, ' ', "LEFT");
      printMsg("", 20, '-', "");
      printMsg("Knowledge", 20, ' ', "RIGHT");
      printMsg("is", 20, ' ', "RIGHT");
      printMsg("Power", 20, ' ', "RIGHT");
      printMsg("", 20, '-', "");

    }

    public static void printMsg(String msg, int num, char placeholder, String align){
      if(msg != null && msg.length() > 0){
            if(msg.length() > num){
                System.out.println(msg);
            }else{
                int spaceNum = num - msg.length();
                if(align.equals("CENTER")){
                  for(int i = 0; i < spaceNum; i++){
                        if(i < spaceNum/2){
                            System.out.print(placeholder);
                        }else if(i == spaceNum/2){
                            System.out.print(msg);
                        }else{
                            System.out.print(placeholder);
                        }
                  }

                }else if(align.equals("LEFT")){
                  System.out.print(msg);
                  for(int i = 0; i < spaceNum; i++){
                        System.out.print(placeholder);
                  }
                }else if(align.equals("RIGHT")){
                  for(int i = 0; i < spaceNum; i++){
                        System.out.print(placeholder);
                  }
                  System.out.print(msg);
                }
                System.out.println();
            }
      }else{
            for(int i = 0; i< num; i++){
                System.out.print(placeholder);
            }
            System.out.println();
      }
    }
}

adacai 发表于 2021-7-22 16:16

前来学习。

沧海一粟hh 发表于 2021-7-22 16:17

adacai 发表于 2021-7-22 16:16
前来学习。

哈哈互相学习

潇未然 发表于 2021-7-22 16:24

windows下的文本文件换行符:\r\n
linux/unix下的文本文件换行符:\r
Mac下的文本文件换行符:\n

潇未然 发表于 2021-7-22 16:26

引号里加空格强行居中下。

tianruo1987 发表于 2021-7-22 16:27

每个单词打印一行不就完了吗?

黄hsir 发表于 2021-7-22 16:28

https://img12.360buyimg.com/ddimg/jfs/t1/192752/7/14316/28813/60f92c11Ea13bf5e0/cc4e081bcdc7dbc2.png

沧海一粟hh 发表于 2021-7-22 16:29

潇未然 发表于 2021-7-22 16:24
windows下的文本文件换行符:\r\n
linux/unix下的文本文件换行符:\r
Mac下的文本文件换行符:\n

谢谢大佬细致指点,已经成功换行了:lol,回车笨办法不行哈{:1_896:}

沧海一粟hh 发表于 2021-7-22 16:29

tianruo1987 发表于 2021-7-22 16:27
每个单词打印一行不就完了吗?

可以是可以,当这样就不符合题目的意义了;www

沧海一粟hh 发表于 2021-7-22 16:32

潇未然 发表于 2021-7-22 16:26
引号里加空格强行居中下。

我把一个语句分三行断开的,每一段加引号会报错
页: [1] 2 3
查看完整版本: Java语言如何将一条语句打印在三行上且单词居中?