I am creating a small Java application that uses Unicode characters to create rows and columns of boxes in the console window in Eclipse Keplar. My code works completely fine but the output of each Unicode character I print is a small box instead of the Unicode character I want to print.
My code is as follows. I have two classes.
My main class:
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();
}
}
And my Table.java class:
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]);
}
}
When the application runs, the output is as follows. I use inputs of 4 for columns, rows, column width, and row width.
Any reason why my console output looks like that? Can anybody help me get the Unicode to display properly? Thanks.