Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 给定2个表示数字的字符串作为输入,返回较大的数字。请注意,这两个数字都不是负数_Java - Fatal编程技术网

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);