Java 给定2个表示数字的字符串作为输入,返回较大的数字。请注意,这两个数字都不是负数
代码 我的代码通过了第一个测试用例,但无法通过其他用例。怎么办?不使用字符串函数Java 给定2个表示数字的字符串作为输入,返回较大的数字。请注意,这两个数字都不是负数,java,Java,代码 我的代码通过了第一个测试用例,但无法通过其他用例。怎么办?不使用字符串函数 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;
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;
}
在转换或比较之前,请检查您的数字不应溢出到int。您的值会导致整数溢出。因此产生了意想不到的结果
检查您的输入必须在范围
-2147483648到2147483647
内。如果您想处理比这些大的数字,请选择long
,而不是将数字读取为整数(如果您试图解析的数字溢出了整数的范围),请按照如下方式读取它们:
Testcase Pass/Fail Parameters Actual Output Expected Output
#1 Pass '1233456' '98765' 1233456 1233456
#2 Fail '9283941233456' '23745237234298765' null 23745237234298765
然后比较两个长的数字,找出哪一个最大。以便将数字与以下标准进行比较:
- “数字是非负的”
- “不使用字符串函数”
- “无法长时间解析数字”(来自SMA回答中的注释)
Integer.parseInt(String)
,Long.parseLong(String)
,新的biginger(String)
,等等
相反,您的逻辑应该是将数字“作为字符串”进行比较。这基本上意味着:
- 比较字符串长度。如果不同,则字符串越长,数字越大
- 对于相同的长度,一个简单的字符串比较将给出“较大”的数字
上述代码假设输入的数字不带前导零,例如,
0003
将比07
大。如果这是一个问题,我会让你们自己去想办法解决。@SURESH ATTA我应该设置什么条件???@SMA_uu我知道这个函数,但严格要求不要使用字符串函数或尝试长时间解析数字。@PallaviSingh:在你们的问题中严格没有提到的东西+答案是1,问题是1。请修正你的问题。@PallaviSingh:我搜索了你的问题,但在任何地方都找不到“long”这个词。如果我错了,请纠正我,如果我对了,请纠正这个问题。@Hovercraft满是鳗鱼uo哦,对不起,我的错..顺便说一句,谢谢你的建议。
Testcase Pass/Fail Parameters Actual Output Expected Output
#1 Pass '1233456' '98765' 1233456 1233456
#2 Fail '9283941233456' '23745237234298765' null 23745237234298765
long a=Long.parseLong(num1);
long b=Long.parseLong(num2);