What would be a octal to hex test case that would fail the following program?
我正在尝试编写一个程序,该程序采用非负八进制数,最大值为8到200000次幂。 输入不会有任何前导零,输出不得包含任何额外的前导零。 我想不出一个测试用例会失败,但它肯定不会作为正确的答案。 因此,我错过了一个边缘案例,我想知道哪一个。 我知道在转换过程中可能会遇到一些"前导零"问题,但我并不完全理解它的含义,因此我无法看到问题/为它提出解决方案。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import java.util.*; import java.io.*; public class arithmetic{ public static void main(String[] args) throws Exception{ InputStreamReader ir = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(ir); String octal = br.readLine(); if(octal == null){ System.out.println("0"); return; } long decimal = Long.parseLong(octal,8); System.out.println(Long.toHexString(decimal).toUpperCase()); } } |
这个问题已经得到了回答,但是有一件事需要补充。
I am aware that there are some"leading zeroes" problems that could be encountered during this conversion.
这不会有问题。前导零仅与源代码中的Java文字相关。 (前导零表示"八进制"......)
顺便提一下,您可以将大八进制数(表示为字符)转换为十六进制,反之亦然,而不转换为
尝试一个包含大量和大量数字的八进制数。您的输入最多可以为2000000. Java Long只是一个64位有符号数。
您不能将足够大的八进制数放入任何Java基本类型中,因此您需要一种完全不同的方法。
一种方法是读取8个八进制数字(24位)的组,并将它们转换为6个十六进制数字的组。
或者在BigInteger和BigDecimal上查看这个答案。