为了账号安全,请及时绑定邮箱和手机立即绑定

如何在java中使用变量中的大数进行算术而不出现异常

如何在java中使用变量中的大数进行算术而不出现异常

慕的地10843 2023-08-23 14:58:44
我应该编写一个程序,它接受一个数字并检查它是否可以容纳在某种数据类型中。这是一个片段:try {   long x=sc.nextLong();   System.out.println(x+" can be fitted in:");   if(x>=-128 && x<=127) {      System.out.println("* byte");   }   else if(x>=-32768 && x<=32768) {      System.out.println("*short");   }   else if(x>= −2147483648l && x<= +2147483647L) {      System.out.println("*int");   }   else if(x>=-9223372036854775808l && x<= +9223372036854775807l) {      System.out.println("*long");   }} catch(Exception e) {   System.out.println(sc.next()+" can't be fitted anywhere.");}当我编译这段代码时,一个奇怪的错误出现了。Solution.java:30: error: illegal character: \8722else if(x>= −2147483648l && x<= +2147483647L)^Solution.java:30: error: not a statementelse if(x>= −2147483648l && x<= +2147483647L)^Solution.java:30: error: ';' expectedelse if(x>= −2147483648l && x<= +2147483647L)^Solution.java:34: error: 'else' without 'if'   else if(x>=-9223372036854775808l && x<= +9223372036854775807l)
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

用于 -2147483648l 的“-”字符不是有效字符,请将其与其他负数 -32768 或 -9223372036854775808l 进行比较。这就是编译错误。



查看完整回答
反对 回复 2023-08-23
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

复制您的代码后,我重复了该错误。看起来好像没有什么问题;该字符看起来像普通的连字符,但事实并非如此。它是一个Unicode“减号”,具有讽刺意味的是,它不被识别为一元减号运算符。


else if(x>= −2147483648l && x<= +2147483647L)

            ^

您可以直观地看到差异:


System.out.println((int) '−');    // Unicode minus sign, U+2212, error in code

System.out.println((int) '-');    // Ordinary hyphen, works in code

输出:


8722        // Decimal of 0x2212

45          

您可能从另一个文档复制了这个 Unicode 减号。将其替换为普通的连字符即可。


查看完整回答
反对 回复 2023-08-23
  • 2 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信