【问题标题】:Store characters in a 2 dimensional array instead of ASCII values将字符存储在二维数组中,而不是 ASCII 值
【发布时间】:2018-02-12 00:13:45
【问题描述】:

我创建了一个将“-”作为空格存储到二维数组中的方法,但在编译后它存储了数字 45,这是“-”字符的 ASCII 值。有人可以告诉我如何实际存储字符而不是 ASCII 值吗?

private int[][] array;
public final char BLANK = '-';
public BlankArray(int gridSize)
{
    array = new int[gridSize][gridSize];
    for(int row = 0; row < gridSize; row++) {

        for(int col = 0; col < gridSize; col++) {

            array[row][col] = BLANK;
        }
    }
}

【问题讨论】:

  • 这是什么语言?
  • 很高兴您愿意参与,但不清楚您使用的是哪种语言。请编辑您的问题以添加适当的标签。
  • 另外,您似乎希望一个字符代码神奇地变成另一个字符代码。为什么不将' ' 用于BLANK
  • 我可以只使用'',但我想将我的空格指定为'-',以便在视觉上更具交互性。
  • 提示:您必须了解信息和表示不一定是一回事。无论出于何种原因,您都决定让 array 使用 int 值。整数首先是数字。当使用该数字作为字符时 45 恰好是破折号字符这一事实很好:你混淆了两件事。将信息放入阵列中,以帮助您完成任务。然后想想如何合理显示那个数组的内容。

标签: java arrays oop


【解决方案1】:

您已经声明了一个整数类型的二维数组。空白字符被隐式转换为整数类型。如果您希望将字符存储在数组中,请将您的数组声明为 char 类型而不是 int。

【讨论】:

  • 我需要数组是整数类型......有没有其他方法可以在保持int类型数组的同时修复它?
  • 是的,您可以保留 int 数组,但是 ASCII 值将存储在数组中。然后,您可以在需要时将该值转换回类型 char,例如char 值 = (char)array[row][col];
  • 我很困惑....我可以在这一行中进行类型转换吗?数组[行][列] = 空白;
  • BLANK 是 char 类型,但是 array[row][col] 是 int 类型。您将只能将 BLANK 的 int 表示形式(即 45)存储在 array[row][col] 中。您可以将其显式转换为 array[row][col] = (int)BLANK;
【解决方案2】:

您可以使用以下命令将存储的 ASCII 值“45”打印为“-”:

System.out.print(" "+ (char)array[row][col]);

考虑这个示例程序:

class fun {

    public int[][] array;
    public final char BLANK = '-';

    public void BlankArray(int gridSize) {

        array = new int[gridSize][gridSize];
        for (int row = 0; row < gridSize; row++) {

            for (int col = 0; col < gridSize; col++) {

                array[row][col] = BLANK;
            }

        }
    }

    public void printArray(int gridSize) {

        for (int row = 0; row < gridSize; row++) {

            for (int col = 0; col < gridSize; col++) {

                // System.out.print("array ["+row+"] ["+col+" ]" +
                // array[row][col]);
                System.out.print(" " + (char) array[row][col]); // casting ASCII
                                                                // value to char
                                                                // at the time
                                                                // of printing
            }
            System.out.println();
        }
    }

}

public class int_array_char {

    public static void main(String args[]) {
        fun obj = new fun();
        obj.BlankArray(4); // passing 4 as gridSize

        obj.printArray(4);

    }
}

注意:打印时只需键入 cast。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    相关资源
    最近更新 更多