java简单if语句计算不正确
你知道为什么这样不行吗?下面的实际代码和调试器运行时的图片,if语句应该设置变量Testnumber=1;但是当它被评估时,它是=0java简单if语句计算不正确,java,Java,你知道为什么这样不行吗?下面的实际代码和调试器运行时的图片,if语句应该设置变量Testnumber=1;但是当它被评估时,它是=0 private String Convert2Time(int Number){ int Hours, Minutes, HrsRemainder, MinRemainder, Seconds; String RetString, OneString, TwoString, ThreeString, HoursStr, MinStr, SecStr;
private String Convert2Time(int Number){
int Hours, Minutes, HrsRemainder, MinRemainder, Seconds; String RetString, OneString, TwoString, ThreeString, HoursStr, MinStr, SecStr;
byte Testnumber = 0;
Hours = Number / 3600;
HrsRemainder = Number % 3600;
Minutes = HrsRemainder / 60;
MinRemainder = HrsRemainder % 60;
Seconds = MinRemainder / 1;
HoursStr = Integer.toString(Hours);
MinStr = Integer.toString(Minutes);
SecStr = Integer.toString(Seconds);
ThreeString = HoursStr + " Hrs " + MinStr + " Min " + SecStr + " Sec";
TwoString = MinStr + " Min " + SecStr + " Sec";
OneString = SecStr + " Sec";
if (Hours < 0){
Testnumber = 2;
} else {
if (Minutes < 0){
Testnumber = 1;
}
}
switch (Testnumber){
case 2:
RetString = ThreeString;
break;
case 1:
RetString = TwoString;
break;
default:
RetString = OneString;
}
return RetString;
}
private String Convert2Time(整数){
整小时,分钟,HrsRemainder,最小余数,秒;字符串RetString,OneString,TwoString,ThreeString,hourstr,MinStr,SecStr;
字节Testnumber=0;
小时数=数量/3600;
HrsRemainder=编号%3600;
分钟=HRS维护器/60;
最小剩余值=HrsRemainder%60;
秒=最小余数/1;
HoursStr=整数.toString(小时);
MinStr=整数。toString(分钟);
SecStr=Integer.toString(秒);
三个字符串=小时数+小时数+分钟数+分钟数+秒数+秒数;
TwoString=MinStr+“Min”+SecStr+“Sec”;
OneString=SecStr+“Sec”;
如果(小时<0){
Testnumber=2;
}否则{
如果(分钟<0){
Testnumber=1;
}
}
开关(测试编号){
案例2:
RetString=ThreeString;
打破
案例1:
RetString=TwoString;
打破
违约:
RetString=OneString;
}
返回字符串;
}
根据您的输出,
小时<0
和分钟<0
都计算为false
。没有理由设置TestNumber=1代码>或甚至TestNumber=2代码>。它保持0
frombyte Testnumber=0代码>
读取方法后,您似乎想将秒数转换为可读时间
主要的问题是状况。小时、分钟、秒将始终具有有效的光栅或等于零,它们不会为负。因为你在除以一个正数
因此,任何像小时<0
,秒<0
这样的条件都不会返回真值;
你需要把它们颠倒过来。因为只有在有小时、分、秒的时候,您才希望在响应中添加正确的块
private String Convert2Time(int Number) {
int Hours, Minutes, HrsRemainder, MinRemainder, Seconds;
Hours = Number / 3600;
HrsRemainder = Number % 3600;
Minutes = HrsRemainder / 60;
Seconds = HrsRemainder % 60;
StringBuilder result = new StringBuilder();
if (Hours > 0) {
result.append(Hours).append(" Hra ");
}
if (Minutes > 0) {
result.append(Minutes).append(" Min ");
}
result.append(Seconds).append( " Min ");
return result.toString();
}
因为您不必要地使代码复杂化了。不要重新发明轮子。使用现有Java类为您完成以下工作:
int numInSeconds = 61;
int millis = numInSeconds * 1000;
Date time = new Date(millis);
int hours = time.getHours();
int mins = time.getMinutes();
int secs = time.getSeconds();
StringBuilder builder = new StringBuilder();
if (hours > 0) {
builder.append(hours);
builder.append(" hrs ");
}
// etc.
String displayTime = builder.toString(); // "1 mins 1 secs"
javascript!==javaclick调试器中的代码:number=61;我得到分钟=1,秒=1,所以If语句的计算结果应该是Testnumber=1;但实际计算结果为Testnumer=0?????请使用小写字母,这样更易于阅读您不需要HoursStr
中间变量。您可以添加int
+String
,这将成为String
。是!!!圣脑放屁蝙蝠侠,我在想小于的符号就是大于的符号。我需要休假!如果您找到了问题的解决方案,请关闭该问题,或接受任何答案。保持垃圾堆的清洁。谢谢:)是的,谢谢你的评论,这是问题的一部分,我不知道所有的预构建类。我将不得不做更多research@jetro57070每个人以前都去过那里!