JavaによるAndroidクライアントのバージョン番号比較
3325 ワード
目次ディレクトリ 前言 キー Javaコード実装 前言
朝CSDNブログランキングを見て、今週の最高順位の文章はJava実現比較バージョン番号です.個人的には、Androidクライアントシステムではバージョン番号比較機能がよく使われているため、特にアプリケーションがアップグレードされている場合によく使われていると思います.元ブロガーがこの文章を書いたのは、Javaプログラマーの多くがcompareToという頼りないAPI呼び出しや不規則なバージョン番号名を採用する可能性があることを考慮したためだ.私がこの文章を書いたのは、ACMのテーマを推賞し、元のブロガーコードの中で考えが不十分な場合を補充したからです.
キー(Key)
ここでは、クライアントのバージョン番号比較のキーを2つの問題に分けて説明します.
String.compareToメソッドを使用してクライアントのバージョン番号を比較できないのはなぜですか?栗を挙げると、以前のクライアントバージョン番号は9.9.9で、サーバー側の最新のクライアントバージョン番号は:10.0.1で、10.0.1は明らかに9.9.9より高いが、compareToメソッドによると、この9.9.9.9は10.0.1より大きく、クライアントバージョン番号の比較エラーを招いた.
元ブロガーコードにはどのような考慮が欠けていますか?元ブロガーは8.5 cという定義不可能なバージョン番号を考慮したが、バージョン番号のプリアンブル0の場合は考慮しなかった.たとえば、元のブロガーのコードに従って、バージョン番号1.0はバージョン番号1より大きい.
どうしてACMのテーマを推奨しますか?ここでACMをお勧めするのは、LeetCodeの前のeasyの文字列比較問題、タイトルリンク:Compare Version Numberを通じて、このような問題を最初に考えたからです.元ブロガーのコードはACというテーマにはならない.
Javaコード実装
いくつか引っ張って、最後にやはりコードをshowして、以下は私のクライアントのバージョン番号がコードを比較して、ツッコミを歓迎します.
朝CSDNブログランキングを見て、今週の最高順位の文章はJava実現比較バージョン番号です.個人的には、Androidクライアントシステムではバージョン番号比較機能がよく使われているため、特にアプリケーションがアップグレードされている場合によく使われていると思います.元ブロガーがこの文章を書いたのは、Javaプログラマーの多くがcompareToという頼りないAPI呼び出しや不規則なバージョン番号名を採用する可能性があることを考慮したためだ.私がこの文章を書いたのは、ACMのテーマを推賞し、元のブロガーコードの中で考えが不十分な場合を補充したからです.
キー(Key)
ここでは、クライアントのバージョン番号比較のキーを2つの問題に分けて説明します.
String.compareToメソッドを使用してクライアントのバージョン番号を比較できないのはなぜですか?栗を挙げると、以前のクライアントバージョン番号は9.9.9で、サーバー側の最新のクライアントバージョン番号は:10.0.1で、10.0.1は明らかに9.9.9より高いが、compareToメソッドによると、この9.9.9.9は10.0.1より大きく、クライアントバージョン番号の比較エラーを招いた.
元ブロガーコードにはどのような考慮が欠けていますか?元ブロガーは8.5 cという定義不可能なバージョン番号を考慮したが、バージョン番号のプリアンブル0の場合は考慮しなかった.たとえば、元のブロガーのコードに従って、バージョン番号1.0はバージョン番号1より大きい.
どうしてACMのテーマを推奨しますか?ここでACMをお勧めするのは、LeetCodeの前のeasyの文字列比較問題、タイトルリンク:Compare Version Numberを通じて、このような問題を最初に考えたからです.元ブロガーのコードはACというテーマにはならない.
Javaコード実装
いくつか引っ張って、最後にやはりコードをshowして、以下は私のクライアントのバージョン番号がコードを比較して、ツッコミを歓迎します.
public static int compareVersion(String version1, String version2) {
if (version1.equals(version2)) {
return 0;
}
String[] version1Array = version1.split("\\.");
String[] version2Array = version2.split("\\.");
int index = 0;
int minLen = Math.min(version1Array.length, version2Array.length);
int diff = 0;
while (index < minLen && (diff = Integer.parseInt(version1Array[index]) - Integer.parseInt(version2Array[index])) == 0) {
index ++;
}
if (diff == 0) {
for (int i = index; i < version1Array.length; i ++) {
if (Integer.parseInt(version1Array[i]) > 0) {
return 1;
}
}
for (int i = index; i < version2Array.length; i ++) {
if (Integer.parseInt(version2Array[i]) > 0) {
return -1;
}
}
return 0;
} else {
return diff > 0 ? 1 : -1;
}
}