java - 为什么if条件总是假的?
问题描述
我正在做一些 java 编码练习,这增加了 2 个二进制数练习。我不确定为什么 if 条件总是错误的,即使我将实际 int 放入变量中。
有什么问题???
public class Main {
public static void main(String[]args){
long bin1 = 10, bin2 = 101;
int carry = 0, i = 0;
int bin1Length = String.valueOf(bin1).length();
int bin2Length = String.valueOf(bin2).length();
int length;
System.out.println("bin1: " + bin1Length);
System.out.println("bin2: " + bin2Length);
if(bin1Length > bin2Length){ // not sure why its always false in all 3 conditions
length = bin1Length;
} else if (bin2Length < bin1Length){
length = bin2Length;
} else if (bin1Length == bin2Length){
length = bin1Length;
}
int [] finalOutput = new int [length];
while(bin1 != 0 || bin2 != 0){
finalOutput[i++] = (int)(carry + (bin1 % 10 + bin2 % 10) % 2);
carry = (int)((carry + bin1 % 10 + bin2 % 10)/2);
bin1 = bin1/10;
bin2 = bin2/10;
}
if(carry != 0){
finalOutput[i] = carry;
}
System.out.print("Output: ");
while(i >= 0){
System.out.print(finalOutput[i--]);
}
}
}
谢谢。
解决方案
您的第一个if
条件和以下条件else if
相同。
对此有更好的了解:
if(bin1Length > bin2Length){
length = bin1Length;
} else if (bin2Length < bin1Length){
length = bin2Length;
}
ifbin1Length
不会大于bin2Length
,当然bin2Length
不会小于bin1Length
。
将其更改为:
if(bin1Length > bin2Length){
length = bin1Length;
} else if (bin1Length < bin2Length){
length = bin2Length;
} else if (bin1Length == bin2Length){
length = bin1Length;
}
推荐阅读
- sas - SAS 库更改
- ios - 无需 Apple 设备即可将视频转换为 IOS Live Photo 格式
- php - 检查路由参数是否为特定值?
- python - Python 3:传递将接受函数中定义的默认值的参数?
- html - Django:通过 css background-image 渲染 AWS S3 静态文件
- javascript - Bootstrap 3 使行的列向右浮动
- javascript - 我如何摆脱逗号,那么我应该把 .join 放在哪里
- c - unix 中的 popen("ls", r) 返回奇怪的字符
- amazon-web-services - 在同一台计算机上将 AWS 和无服务器 CLI 用于专业和教育项目的最佳实践?
- angular - 如何在单击事件中从字符串中选择“单词”