Sample Input #1
larger("923","3243")
Sample Output #1
3243
Sample Input #2
larger("2354725234782357","2354725234782347")
Sample Output #2
2354725234782357
码
public String larger(String num1, String num2){
String str1="";
int a=Integer.parseInt(num1);
int b=Integer.parseInt(num2);
if(num1.length()>num2.length())
return num1;
if(num2.length()>num1.length())
return num2;
if(num1.length()==num2.length()){
if(a>b){
str1=""+a;
return str1;
}
}
return str1+b;
}
我的代码通过了第一个测试用例但无法通过其他情况。该怎么办?使用字符串函数。
Testcase Pass/Fail Parameters Actual Output Expected Output
#1 Pass '1233456' '98765' 1233456 1233456
#2 Fail '9283941233456' '23745237234298765' null 23745237234298765
答案 0 :(得分:1)
不是将数字作为整数读取(假设您尝试解析的数字溢出整数范围),请按以下方式读取它们:
long a=Long.parseLong(num1);
long b=Long.parseLong(num2);
然后比较两个长数字以找出哪一个最大。
答案 1 :(得分:0)
在转换或比较之前,请检查您的数字是否应该溢出到int。您的值导致整数溢出。因此意外的结果。
检查您的输入必须在-2,147,483,648 to 2,147,483,647
范围内。如果您想处理大于这些数字,请转到long
&#39>
答案 2 :(得分:0)
为了将数字与以下标准进行比较:
这没有任何意义。如果您将数字作为字符串接收,则 使用某些字符串函数来检查该值。
鉴于第一个标准,我认为这意味着你不能使用任何以字符串作为参数的函数。这会消除Integer.parseInt(String)
,Long.parseLong(String)
,new BigInteger(String)
等等。
相反,您的逻辑应该是将数字"作为字符串"进行比较。这基本上意味着:
上述代码假定数字未输入前导零,例如0003
的比较大于07
。如果这是一个问题,我会留给你试着找出解决方法。