1

我正在尝试将用户输入的字符串转换为 int。没问题,我正在使用以下代码:

c = sc.next();
while(!c.contains("#")){
    i = Integer.parseInt(c);
    input.add(c);
    c= sc.next();
}

(这只是进行转换的代码部分,扫描仪部分正在工作)

唯一的问题是输入是二进制数,所以当输入例如“00111”时,转换给我“111”,我不能丢失那些0。如何在不丢失左侧零的情况下将用户输入转换为数字?

4

4 回答 4

8

如果00111与 then 不同,111则不能将其存储为整数,则需要将它们存储为字符串。

但是请注意,即使在二进制中, 00111 2也等于 111 2

要解析二进制文字并将其存储在整数中,请使用

Integer.parseInt(c, 2);

(但这并不能解决保持前导零的问题。)

于 2012-05-09T13:46:58.297 回答
3

你应该使用:

Integer.parseInt(c, 2)
于 2012-05-09T13:47:24.717 回答
2

Integer.parseInt("00111", 2);

但是您必须提前知道基数才能区分二进制 (2) 和十进制 (10) 数字。

或者我可能不明白你的问题?你关于“失去0”的说法有点难以理解。

于 2012-05-09T13:47:15.253 回答
0

要保留二进制字符串 s 中的前导零:

从字符串到整数:将“1”作为前缀附加到 s 并转换为整数。

从整数到字符串:将整数转换为二进制字符串并删除第一个“1”。

于 2015-09-01T14:17:46.873 回答