提供了两个代表两个数字的字符串作为输入。字符串中的数字可能非常大,以至于它们可能无法由Java数据类型int表示。目标是比较两个数字并将该数字输出为字符串
例如,我们必须比较:" 874986754789289867753896798679854698798789857387687546456"
和
" 98347598375689758967756458678976893478967586857687569874"
它们都在JAVA中超出long和int数据类型的范围 并且在比较之后我们必须将该数字输出为字符串
答案 0 :(得分:8)
你可以先看看每个字符串的长度。如果其中一个更长并且您知道它们都是无符号值,则较长的字符串具有较大的数字。如果它们都具有相同的长度,则从左到右开始比较字符串char by char。当你找到你的第一个更大的数字时,你得出结论这个数字更大。
答案 1 :(得分:2)
您是否尝试比较或减去并不清楚,但Java的BigInteger
类同时具有这两种操作。这可能就是你所需要的:
BigInteger a = new BigInteger("874986754789289867753896798679854698798789857387687546456");
BigInteger b = new BigInteger("98347598375689758967756458678976893478967586857687569874");
System.out.println( (a.compareTo(b) > 0 ? "a" : "b") + " is larger.");
如果您需要减去我肯定会使用BigInteger
的数字,但如果您需要做的就是比较它们,您可以编写自己的方法。你的一个输入字符串比另一个输入字符串长,所以禁止前导零,它会立即告诉你哪个更大。如果字符串长度相同,您可以在循环中逐个字符地比较它们,以查看哪个更大。字符串charAt
和toCharArray
方法为您提供了两种不同的方法来实现此方法。
答案 2 :(得分:0)
如果是学校作业,您不能使用内置解决方案但是您需要编写自己的方法来比较这些字符串,那么您需要
0000123
代表123
您可能需要的String类成员
toCharArray()
charAt(int index)
length
如果您可以使用内置解决方案,您可以使用这些字符串创建BigInteger
个实例并使用其compareTo
方法,该方法将判断一个数字是否更大(正结果)等于(0 )或者比其他人更小(负面结果)。
答案 3 :(得分:0)
为了使用大数字,必须将它们声明为double。您可以使用解析器将字符串转换为数字。
public static void main(String [] args) {
String numberOne = "874986754789289867753896798679854698798789857387687546456";
double parsedNumberOne = Double.parseDouble(numberOne);
String numberTwo = "98347598375689758967756458678976893478967586857687569874";
double parsedNumberTwo = Double.parseDouble(numberTwo);
double result = compareMethod (numberOne, numberTwo);
System.out.println("Result = " + result);
}
我明确地声明了数字,而不是通过阅读用户输入,但您可以轻松地修改它以与您的代码内联。在compareMethod中,您可以随意比较这些数字。
此致
答案 4 :(得分:0)
使用compareTo()比较两个字符串就足够了。比较将通过将每个字符转换为ASCII值来完成。
String number1 = "874986754789289867753896798679854698798789857387687546457";
String number2 = "874986754789289867753896798679854698798789857387687546456";
int result = number1.compareTo(number2);
if (result == 0) {
System.out.println("Both are equal");
} else if (result > 0) {
System.out.println("Number1 is greater");
} else {
System.out.println("Number2 is greater");
}
答案 5 :(得分:-1)
您需要从右到左逐个(或逐个组)比较字符(转换为数字)。分别使用charAt(int)
或substring(int, int)
等方法。