Java中如何控制右对齐输出?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中如何控制右对齐输出?相关的知识,希望对你有一定的参考价值。

Java中控制右对齐输出的方法有以下:


1、你可以把数字转换成字符串,用 String.format("% 4d", number1); 可以补充空格。有个更好的方法用printf();这个给C中的方法差不多,很方便例如这样:System.out.printf("%-10s","abc"); //输出10列,左对齐(-号表示左对齐);System.out.printf("%8d",23); //输出8列, 右对齐。


2、你可以把数字转换成字符串,用 String.format("% 4d", number1); 可以补充空格,这样行
有个更好的方法用printf();这个给C中的方法差不多,很方便例如这样:System.out.printf("%-10s","abc");System.out.printf("%8d",23);System.out.println();System.out.printf("%-10s","ab");System.out.printf("%8d",23); 就可以了,这只是个例子,具体情况怎么实现看你自己。

参考技术A

    %4.xx  使输出右对齐,不足4位用空格;

    %-10s  使字符串左对齐输出,不足10位,后加空格;

    %10s   使字符串右对齐输出,不足10位,前加空格。

输出的对齐格式:
printf("%4.d\\n",1);
printf("%4.d\\n%4.d\\n%4.d\\n",3,12,1123);
printf("%-10s%d\\n",s,12);
%4.xx  使输出右对齐;不足4位用空格;
%.4xx  使小数保留4位小数,若该数为整形,不足四位前填0;多余4位原样输出;
%-4.xx 使输出的数左对齐;
%-10s  使字符串左对齐输出,不足10位,后加空格;
%10s   使字符串右对齐输出,不足10位,前加空格;
%10.s  不输出字符,只输出10位空格;
%.10s  字符原样输出;

举例:
#include<stdio.h>
int main()

printf("%4.d%4.d%4.d\\n",1,34,12344);
printf("%4.d\\n%4.d\\n%4.d\\n",3,12,11123);  //右对齐;不足四位,前加空格;
printf("%.4d\\n%.4d\\n%.4f\\n%.4f\\n",23,2342,2.3,343.32);  //对小数,保留四位小数;对整数,不足四位,前加零;
printf("%-4.d%-4d\\n",1,23423);  //左对齐;不足四位,后加空格;
printf("%-10s%-10s\\n","asdsd","asdsfdgfhgh");  //不足十位,后加空格;
printf("%10s%10s\\n","sdsfsf","sdsfdsgsgf");  //不足十位,前加空格;
printf("%10.sq\\n","asdaff");  //输出十个空格;
printf("%.10s%.10s\\n","asdad","sdsfdsgfgg"); //字符串原样输出;

参考技术B 这个是没有具体的方法实现的,只用控制输出前面的空格建议看一下九九乘法表的算法实现!!需要的话可以call我

int a; for(int i=0;i<=999;i++)
if(a/10<1) for(int q=0;q<=10;q++)system.out.println(" 2空格 "+a);
else if(1<=a/10<10)for(int b=0;b<=90;b++)System.out.println("1空格"+a);
else if(10<=a<100)for(int c=0;c<=901;c++)System.out.println(a);
else
break;
参考技术C for(int i=0;i<=10;i++)
System.out.printf("%10s", i);

%10s 是表示对应的空格10格
i 是将要输出的

看下这是不是你所要的本回答被提问者采纳
参考技术D System.out.println("a\tb\tc");
System.out.println("1\t2\t3");
试试看\t制表符。追问

谢谢啊,叫了我这么好的方法。不过不是右对齐输出,而是像制表一样上下对齐!谢谢!

我如何通过在 R 中使用 cat 来解决这个对齐问题,它会一直向左对齐而不是向右对齐

【中文标题】我如何通过在 R 中使用 cat 来解决这个对齐问题,它会一直向左对齐而不是向右对齐【英文标题】:How can i fix this alignment issue with using cat in R, where it keeps aligning a bit to the left instead of right 【发布时间】:2021-08-07 10:33:44 【问题描述】:

我试图让我的输出看起来像这样,它显示所有内容都向右对齐并且间隔均匀: Expected output

但由于某种原因,我自己的输出最终被移到了左边:

Board(playerA, header = TRUE)
   Name    0s   1s   2s   3s   5s   X    Out  Tot 
T Smith    1    1    1    2    2    0    0   19

以下代码是一个具有以下属性的矩阵:

initialise <- function(name) 
  matrix(
    rep(0, 8),
    nrow = 1, 
    ncol = 8,
    byrow = TRUE,
    dimnames = list(name,c("0s", "1s", "2s", "3s", "5s", "X", "Out", "Tot")
    )
  )   

这是我为了打印矩阵并将列归类到“名称”一词以及空格并使其看起来均匀而执行的代码:

Board <- function(player, header = FALSE) 
  if (header) 
    cat("   Name   ")

    for (name in colnames(player)) 
      cat(" ")
      cat(format(name, width = 4))
    
    cat("\n")

    cat(rownames(player))


    for (i in 1:length(player)) 
      cat(" ")
      cat(format(player[i], width = 4))
    
  
#test code
playerA <- initialise("T Smith")
Board(playerA, header = TRUE)

如果有人能提供帮助,我将不胜感激!

【问题讨论】:

@GKi 你能说得更具体点吗? @GKi 抱歉没有工作导致它未对齐 请不要在问题中编辑解决方案公告。接受(即单击旁边的“勾号”)现有答案之一,如果有的话。如果现有答案尚未涵盖您的解决方案,您还可以创建自己的答案,甚至接受它。 【参考方案1】:

您必须将播放器名称扩展/修剪到标题中cat(" Name ") 的宽度。

Board <- function(player, header = FALSE) 
  if (header) 
    cat("   Name")
    
    for (name in colnames(player)) 
      cat(" ")
      cat(format(name, width = 4, justify = "right"))
    
    cat("\n")
  
  cat(strtrim(paste(rownames(player), "      "), 7))

  for (i in 1:length(player)) 
    cat(" ")
    cat(format(as.character(player[i]), width = 4, justify = "right"))
  

Board(playerA, header = TRUE)
#   Name   0s   1s   2s   3s   5s    X  Out  Tot
#T Smith    0    0    0    0    0    0    0    0   0

【讨论】:

只需删除 Name 后面的空格,并在 strtrim 中减少它。 -> 查看更新。

以上是关于Java中如何控制右对齐输出?的主要内容,如果未能解决你的问题,请参考以下文章

C语言输出如何右对齐?

Java中怎么对齐输出

C语言输出如何右对齐

java标准化格式输出 在控制台输出类似表格类型的左对齐格式

如何使用javascript将单词向右对齐

c语言怎么让文字右对齐