java简单if语句计算不正确

java简单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;

你知道为什么这样不行吗?下面的实际代码和调试器运行时的图片,if语句应该设置变量Testnumber=1;但是当它被评估时,它是=0

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
from
byte 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每个人以前都去过那里!