【问题标题】:Reading in positive long integer values into an array将正长整数值读入数组
【发布时间】:2013-04-03 13:22:59
【问题描述】:

我正在寻找 .dat 类型的文件。我不知道文件的大小,但是我知道内容的形式是

111000111
0101
0100
1
0011
110
0010
101
0001
11
0000

目前我所拥有的如下

public static void readFile(String fileName) throws FileNotFoundException, IOException
{
    File file = new File(fileName);

    byte[] bytes = new byte[(int) file.length()];
    try (FileInputStream fis = new FileInputStream(file))
    {
        fis.read(bytes);
    }


    String[] value = new String(bytes).split("\\s+");


    numbers = new int[value.length];


    for (int i = 0; i < value.length; i++)
    {
        numbers[i] = Integer.parseInt(value[i]);
    }





    for (int i = 0; i < numbers.length; i++)
    {
        System.out.println(numbers[i]);
    }

} // end of import file 

文件的输出如下所示。如您所见,如果一个数字以 0(或多个)开头,则会被删除。

111000111
101
100
1
11
110
10
101
1
11
0

感谢任何帮助。

问候,

迈克

【问题讨论】:

  • 那么你的问题是什么?
  • 他想知道如何防止数字中的前导零被截断。
  • 如果你想保留前导零,那么你不想要Integers。只需将它们存储为Strings。

标签: java arrays binary integer long-integer


【解决方案1】:

如果前导零有问题,则不应使用 Integer.parseInt

在这种情况下,保存一个字符串数组会更好。

numbers = new String[value.length];

numbers[i] = value[i];

如果以后你想在任何方法中使用数组内容作为整数,你可以在那里使用 Integer.parseInt。

【讨论】:

  • 好吧,我想我的麻烦在于,我需要保持原样。这样 0001 在转换为 int 后仍为 0001 以进行必要的转换。所以 Integer.parseInt 没有按我的需要工作。有没有办法做填充,这样我就可以保持零?
【解决方案2】:

那是因为您将值解析为整数

Integer.parseInt(value[i])

改用这个:

String[] values = new String[value.length];


for (int i = 0; i < value.length; i++)
{
    values[i] = value[i];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    相关资源
    最近更新 更多