我正在创建一个小型Java应用程序,它使用Unicode字符在Eclipse Keplar的控制台窗口中创建行和列的框。我的代码运行得很好,但我打印的每个Unicode字符的输出都是一个小方框,而不是我想打印的Unicode字符。
我的代码如下所示。我有两节课。
我的主课是:
package assign03;
import java.util.Scanner;
public class Assign03 {
private static int columns;
private static int cWidth;
private static int rows;
private static int rHeight;
private static Table table;
public static void main(String[] args) {
table = new Table();
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of columns: ");
columns = input.nextInt();
System.out.print("Enter the width of the columns: ");
cWidth = input.nextInt();
System.out.print("Enter the number of rows: ");
rows = input.nextInt();
System.out.print("Enter the width of the rows: ");
rHeight = input.nextInt();
table.printFirstLine(columns, cWidth);
for (int r = 0; r < rows; r++) {
for (int rh = 0; rh < rHeight; rh++) {
table.printVerticalLine(columns, cWidth);
}
if (r < (rows - 1)
table.printInternalLine(columns, cWidth);
}
table.printLastLine(columns, cWidth);
input.close();
}
}
和我的Table.Java类:
package assign03;
public class Table {
private char firstLine[] = { 'u2501', 'u250F', 'u2533', 'u2513' };
private char internalLine[] = { 'u2501', 'u2523', 'u254B', 'u252B' };
private char lastLine[] = { 'u2501', 'u2517', 'u253B', 'u251B' };
private char verticalLine[] = { 'u2503' };
private char whiteSpace[] = { 'u2003' };
public void printFirstLine(int columns, int cWidth) {
System.out.print(firstLine[1]);
for (int c = 0; c < columns; c++) {
for (int cw = 0; cw < cWidth; cw++) {
System.out.print(firstLine[0]);
}
if (c < (columns - 1))
System.out.print(firstLine[2]);
}
System.out.println(firstLine[3]);
}
public void printVerticalLine(int columns, int cWidth) {
for (int c = 0; c <= columns; c++) {
System.out.print(verticalLine[0]);
for (int cw = 0; cw < cWidth; cw++) {
System.out.print(whiteSpace[0]);
}
}
System.out.println();
}
public void printInternalLine(int columns, int cWidth) {
System.out.print(internalLine[1]);
for (int c = 0; c < columns; c++) {
for (int w = 0; w < cWidth; w++) {
System.out.print(internalLine[0]);
}
if (c < (columns - 1))
System.out.print(internalLine[2]);
}
System.out.println(internalLine[3]);
}
public void printLastLine(int columns, int cWidth) {
System.out.print(lastLine[1]);
for (int c = 0; c < columns; c++) {
for (int w = 0; w < cWidth; w++) {
System.out.print(lastLine[0]);
}
if (c < (columns - 1))
System.out.print(lastLine[2]);
}
System.out.println(lastLine[3]);
}
}
当应用程序运行时,输出如下所示。我使用4作为列、行、列宽和行宽的输入值。
为什么我的控制台输出看起来是这样的?有谁能帮我把Unicode正确显示出来吗?谢谢。
2条答案
按热度按时间w80xi6nr1#
对我起作用的是,在工作空间下的首选项中,将“文本文件编码”更改为UTF-8。
rpppsulh2#
小方框表示当前字体没有这些符号。
您必须找到支持它们的字体,并配置控制台字体(搜索“控制台”的首选项)才能使用它。
如果它仍然不起作用,请确保您已经将正在运行的Java应用程序(即打印到控制台)配置为发出UTF-8。在Eclipse中,可以通过打开启动配置并将“控制台编码”设置为UTF-8(see this blog post或here)来完成此操作