这是我在LeetCode中为这个问题编写的代码片段。
public static int quotient(int dividend,int divisor){
int n=Math.abs(divisor),count=0,ans=Integer.MAX_VALUE-1;
if(Math.abs(dividend)==1 && Math.abs(divisor)==1){
return dividend*divisor;
}
else if(Math.abs(divisor)==1){
if(dividend<0 && divisor<0)
return Math.abs(dividend);
return dividend*divisor;
}
else if(dividend==0){
return 0;
}
else {
while (true) {
if (n > Math.abs(dividend)) {
ans = count;
break;
} else if (n == Math.abs(dividend)) {
ans = count + 1;
break;
} else {
n += Math.abs(divisor);
count++;
}
}
}
if((dividend<0 && divisor>0) || (dividend>0 && divisor<0))
ans*=-1;
return ans;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int dividend=sc.nextInt();
int divisor = sc.nextInt();
int ans=quotient(dividend,divisor);
System.out.println(ans);
}
为什么会这样?请解释一下。
我认为这是一个整数溢出。如这里所示,长整数的最大值是2147483647
,并且没有2147483648
这样的int
值,所以当添加1
时,它将作为下一个整数-2147483648
。您可以尝试long
类型来解决这个问题,它的最大值在Java中是9223372036854775807
(这是很多)。
-2147483648是32位整数类型的最小整数,但它似乎会在
Android 4.4发布后不久,我的代码从2.2开始就一直正常工作,但突然出了问题。 我的代码将在音乐数据库中查询给定的音乐文件。在查询中返回路径,然后将该路径传递到MediaPlayer。 代码: 我最终在我的 LogCat 中得到了无用的错误(1, -2147483648) 消息。 我也尝试过更换 具有 但这会在新的 FileInputStream(...) 上生成一个 FileNotFou
我与Wildfly和OpenJPA合作。我有一个乐观锁例外的情况。 我得到的错误消息是: 00:08:29373警告[com.arjuna.ats.arjuna](默认任务-39)arjuna01225:TwoPhaseCoordinator。beforeCompletion-SynchronizationImple失败 :org.apache.openjpa.persistence.乐观锁定异常
我现在有一个helloworld项目根据这个链接,我做了它的。帽子 文件成功。我有“DE-ABCM_TB”读卡器和SAM卡。 我的小程序AID是 我可以在卡片上选择我的小程序。(我通过"DualCard"发送SELECT APDU命令 2.8版“/pcsc选项卡)。我现在必须在发送时接收十六进制格式的hello 。但我收到6C0B!为什么我会得到这样的回应 我如何解决这个问题?我搜索了一下,但没有
当我运行(Windows 7命令行)时: C:\rest-app\src\main\java\com\mycompany\app\test>java org.testng.testng testng.xml Suite1运行的测试总数:0,失败:0,跳过:0 ================================================== 此时我的testng.xml文件如下所
问题是什么?