互換性のない型について:longからintエラーへの不可逆変換の可能性(型変換エラー)

シーン:

リートコードの質問7:

7.整数反転
32ビットの符号付き整数xを提供し、xのデジタル部分を反転した結果を返します。

反転後、整数が32ビットの符号付き整数の範囲[-231、231 -1]を超えると、0が返されます。

環境が64ビット整数(符号付きまたは符号なし)の格納を許可していないと想定します。

出典:LeetCode
リンク:https ://leetcode-cn.com/problems/reverse-integer
著作権はLeetCodeが所有しています商用転載の場合は、公認機関にご連絡ください。非商用転載の場合は、出典を明記してください。

ここに画像の説明を挿入します

問題の説明:

最初の答え:

class Solution {
    public int reverse(int x) {
            long y=0;
            while (x!=0){
                y=y*10+x%10;
                x=x/10;
            }
            return (int)y==y?y:0;
    }
}

エラーが報告されました:次のように
ここに画像の説明を挿入します
翻訳されます:

互換性のないタイプ:longからint
への不可逆変換の可能性return(int)y == y?y:0;

原因分析:

long型yはint型として返すことはできず、強制的にint型にする必要があります。つまり、returnは次のように変更する必要があります
。return(int)y == y?(int)y:0;

class Solution {
    
    
    public int reverse(int x) {
    
    
            long y=0;
            while (x!=0){
    
    
                y=y*10+x%10;
                x=x/10;
            }
            return (int)y==y?(int)y:0;
    }
}

正常に解決されました

ここに画像の説明を挿入します

もちろん、この問題はtry / catchでも実行できますが、この方法の方が柔軟性があります。

おすすめ

転載: blog.csdn.net/m0_50654102/article/details/114811169