首先是獲取到已安裝的版本的版本號,例如1.2.3a。其次是獲取最新版本的版本號,例如1.2.4b。
以下代碼爲了簡潔,直接進行版本比較思路書寫:
首先是佈局文件,兩個輸入框輸入的是版本號,一般版本號的格式是xxx.xxx.xx,一個按鈕用來觸發比較行爲,另一個TextView用來顯示比較結果。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="20dp"
tools:context="com.example.administrator.comparestringapplication.MainActivity">
<EditText
android:id="@+id/string1"
android:textAlignment="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="1.2.4b" />
<EditText
android:id="@+id/string2"
android:textAlignment="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="1.2.3a" />
<Button
android:id="@+id/compare"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="比較"/>
<TextView
android:id="@+id/result"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
接下來是主要邏輯的代碼部分:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private EditText string1;
private EditText string2;
private Button compare;
private TextView result;
private String mString1;
private String mString2;
private String mResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView(savedInstanceState);
}
private void initView(Bundle savedInstanceState) {
string1 = (EditText) findViewById(R.id.string1);
string2 = (EditText)findViewById(R.id.string2);
compare = (Button) findViewById(R.id.compare);
result = (TextView) findViewById(R.id.result);
compare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getData();
compare2String();
result.setText(mResult);
}
});
}
private void compare2String() {
mResult = mString1 + "版本比" + mString2 + "版本";
String[] strings11 = mString1.split("\\.");
String[] strings21 = mString2.split("\\.");
int x = strings11.length - strings21.length;
if (x > 0){
for(int i =0;i < x; i ++){
mString2 += ".0";
}
}
if(x < 0){
x = -x;
for(int i =0;i < x; i ++){
mString1 += ".0";
}
}
String[] strings1 = mString1.split("\\.");
String[] strings2 = mString2.split("\\.");
int index ;
if(strings1.length <=strings2.length) {
index = strings1.length;
}else{
index = strings2.length;
}
boolean a = false;
boolean b = false;
for (int j = 0; j < index; j++) {
char[] s1 = strings1[j].toCharArray();
char[] s2 = strings2[j].toCharArray();
if (s1.length > s2.length) {
mResult = mResult + "大";
break;
} else if (s1.length < s2.length) {
mResult = mResult + "小";
break;
} else {
for (int i = 0; i < s1.length; i++) {
if (s1[i] - s2[i] == 0) {
continue;
} else if (s1[i] - s2[i] > 0) {
a = true;
break;
} else {
b = true;
break;
}
}
}
if(a){
mResult = mResult + "大";
break;
}
if (b){
mResult = mResult + "小";
break;
}
if (a == false && b == false){
continue;
}
}
}
private void getData() {
mString1 = string1.getText().toString().trim().toLowerCase();
mString2 = string2.getText().toString().trim().toLowerCase();
}
}
得到的結果如下: