我正在尝试将用户输入的字符串转换为 int。没问题,我正在使用以下代码:
c = sc.next();
while(!c.contains("#")){
i = Integer.parseInt(c);
input.add(c);
c= sc.next();
}
(这只是进行转换的代码部分,扫描仪部分正在工作)
唯一的问题是输入是二进制数,所以当输入例如“00111”时,转换给我“111”,我不能丢失那些0。如何在不丢失左侧零的情况下将用户输入转换为数字?
我正在尝试将用户输入的字符串转换为 int。没问题,我正在使用以下代码:
c = sc.next();
while(!c.contains("#")){
i = Integer.parseInt(c);
input.add(c);
c= sc.next();
}
(这只是进行转换的代码部分,扫描仪部分正在工作)
唯一的问题是输入是二进制数,所以当输入例如“00111”时,转换给我“111”,我不能丢失那些0。如何在不丢失左侧零的情况下将用户输入转换为数字?
如果00111
与 then 不同,111
则不能将其存储为整数,则需要将它们存储为字符串。
但是请注意,即使在二进制中, 00111 2也等于 111 2。
要解析二进制文字并将其存储在整数中,请使用
Integer.parseInt(c, 2);
(但这并不能解决保持前导零的问题。)
你应该使用:
Integer.parseInt(c, 2)
Integer.parseInt("00111", 2);
但是您必须提前知道基数才能区分二进制 (2) 和十进制 (10) 数字。
或者我可能不明白你的问题?你关于“失去0”的说法有点难以理解。
要保留二进制字符串 s 中的前导零:
从字符串到整数:将“1”作为前缀附加到 s 并转换为整数。
从整数到字符串:将整数转换为二进制字符串并删除第一个“1”。