I'm trying to print an ASCII table with each number and its corresponding value, but I don't know how to get the character associated with the number.
public static void main(String[] args) {
    for(char letter= ' ';letter<274;letter++)
       System.out.print(letter);
}
How can I print the associated character with the number?
Here is a quick implementation you can copy & paste:
import java.util.ArrayList;
import java.util.List;
public class AsciiTable {
    private final List<Column> columns = new ArrayList<>();
    private final List<Row> data = new ArrayList<>();
    private int maxColumnWidth = Integer.MAX_VALUE;
    public void calculateColumnWidth() {
        for (Column column : columns) {
            column.width = column.name.length() + 1;
        }
        for (Row row : data) {
            int colIdx = 0;
            for (String value : row.values) {
                Column column = columns.get(colIdx);
                if (value == null) continue;
                column.width = Math.max(column.width, value.length() + 1);
                colIdx++;
            }
        }
        for (Column column : columns) {
            column.width = Math.min(column.width, maxColumnWidth);
        }
    }
    public void render() {
        StringBuilder sb = new StringBuilder();
        writeSeparator(columns, sb);
        writeColumnNames(columns, sb);
        writeSeparator(columns, sb);
        // values
        writeValues(columns, data, sb);
        writeSeparator(columns, sb);
        System.out.println(sb.toString());
    }
    private void writeColumnNames(final List<Column> columns, final StringBuilder sb) {
        sb.append("|");
        for (Column column : columns) {
            sb.append(String.format(" %-" + (column.width) + "s", column.name));
            sb.append("|");
        }
        sb.append("\n");
    }
    private void writeSeparator(final List<Column> columns, final StringBuilder sb) {
        sb.append("+");
        for (Column column : columns) {
            sb.append(String.format("%-" + (column.width + 1) + "s", "").replace(' ', '-'));
            sb.append("+");
        }
        sb.append("\n");
    }
    private void writeValues(final List<Column> columns, final List<Row> rows, final StringBuilder sb) {
        for (Row row : rows) {
            int columnIdx = 0;
            sb.append("|");
            for (String value : row.values) {
                if (value != null && value.length() > maxColumnWidth)
                    value = value.substring(0, maxColumnWidth - 1);
                sb.append(String.format(" %-" + columns.get(columnIdx).width + "s", value));
                sb.append("|");
                columnIdx++;
            }
            sb.append("\n");
        }
    }
    public List<Column> getColumns() {
        return columns;
    }
    public List<Row> getData() {
        return data;
    }
    public int getMaxColumnWidth() {
        return maxColumnWidth;
    }
    public void setMaxColumnWidth(final int maxColumnWidth) {
        this.maxColumnWidth = maxColumnWidth;
    }
    public static class Column {
        private String name;
        private int width;
        public Column(final String name) {
            this.name = name;
        }
        @Override
        public String toString() {
            return "Column{" +
                    "name='" + name + '\'' +
                    ", width=" + width +
                    '}';
        }
    }
    public static class Row {
        private final List<String> values = new ArrayList<>();
        public List<String> getValues() {
            return values;
        }
        @Override
        public String toString() {
            return "Row{" +
                    "values=" + values +
                    '}';
        }
    }
}
Sample usage for a single column table:
    AsciiTable table = new AsciiTable();
    table.setMaxColumnWidth(45);
    table.getColumns().add(new AsciiTable.Column("my column"));
    for (String value : myListOfValues) {
        AsciiTable.Row row = new AsciiTable.Row();
        table.getData().add(row);
        row.getValues().add(value);
    }
    table.calculateColumnWidth();
    table.render();
Output:
+-----------+
| my column |
+-----------+
| one       |
| two       |
| three     |
+-----------+
                        It's simple ...
   for (int c=32; c<128; c++) {
    System.out.println(c + ": " + (char)c);
   } 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With