Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中对齐下一行?_Java_Encoding_Character Encoding_String Formatting - Fatal编程技术网

如何在Java中对齐下一行?

如何在Java中对齐下一行?,java,encoding,character-encoding,string-formatting,Java,Encoding,Character Encoding,String Formatting,我不知道如何在JAVA中右对齐这些列。我试过几种方法,但都不管用。它适用于其他字符,但不适用于中文 String line1="冻结金额"; String line2="投资中金额"; String line3="投资中金额额"; String line4="投资中金中金额"; System.out.format("%-10s %s %n",line1, "XX" ); System.out.format("%-10s %s %n",line2, "XX" ); System.out.forma

我不知道如何在JAVA中右对齐这些列。我试过几种方法,但都不管用。它适用于其他字符,但不适用于中文

String line1="冻结金额";
String line2="投资中金额";
String line3="投资中金额额";
String line4="投资中金中金额";
System.out.format("%-10s %s %n",line1, "XX" );
System.out.format("%-10s %s %n",line2, "XX" );
System.out.format("%-10s %s %n",line3, "XX" );
System.out.format("%-10s %s %n",line4, "XX" );
这是预期的结果,但即使在这里也无法正确显示

冻结金额             XX 
投资中金额           XX
投资中金额额         XX
投资中金中金额       XX

Java代码没有问题,只是显示输出的方式有问题

结果如下:

冻结金额       XX 
投资中金额      XX 
投资中金额额     XX 
投资中金中金额    XX 
如果您要实际计算字符数或执行以下操作:

System.out.println(String.format("%-10s %s ",line1, "XX").length());
System.out.println(String.format("%-10s %s ",line2, "XX").length());
System.out.println(String.format("%-10s %s ",line3, "XX").length());
System.out.println(String.format("%-10s %s ",line4, "XX").length());
你会看到每一行都有相同的长度(14)

问题是显示字体显示的汉字与其他字符的大小不同。

您可以(ab-)使用全宽空间,
“\u3000”


虽然只需稍加努力,您就可以完成HTML输出。

我使用这种方法,但我不知道它如何处理汉字:

public String padRight(String s, int n) 
{
    return String.format("%1$-" + n + "s", s);  
}
这样称呼它:
padRight(stringtobeaddedtotheright,intNumberOfPadsToTheRight)

谢谢大家

您是对的,代码没有问题,只有编辑器配置

在我使用eclipse编辑器的情况下,我只需更改Unicode的默认字体

冻结金额       XX
投资中金额      XX
投资中金额额     XX

请举例说明你希望输出结果如何!显然是右派。这是一个带右对齐的10个字符宽的列。尽管使用此解决方案,非中文字符的字符串将无法正确格式化。可能没有一个解决方案可以同时适用于这两种情况。
冻结金额       XX
投资中金额      XX
投资中金额额     XX