查看完整版本: (已解決)(android)AB GAME問題 卡在不同型態陣列如何判斷相等
頁: [1]

a7813195 發表於 2017-5-5 08:19 PM

(已解決)(android)AB GAME問題 卡在不同型態陣列如何判斷相等

本帖最後由 a7813195 於 2017-5-7 01:54 AM 編輯

首先我認為我應該沒有PO錯版><(因為android是使用java語言去撰寫的 況且也沒有android的獨立版)因為是android所以先PO元件宣告




int[] answer = new int[4];
int[] temp = new int[10];

private Button btnStart, btnExit, btnCollation;
private EditText editAnswer;
private TextView textAnswer;
private ListView ListView01;
onCreate部分:btnStart = (Button)findViewById(R.id.btnStart);
btnExit = (Button)findViewById(R.id.btnExit);
btnCollation = (Button)findViewById(R.id.btnCollation);
editAnswer = (EditText)findViewById(R.id.editAnswer);
textAnswer = (TextView)findViewById(R.id.textAnswer);
ListView01 = (ListView)findViewById(R.id.ListView01);

btnStart.setOnClickListener(StartListener);
btnExit.setOnClickListener(ExitListener);
btnCollation.setOnClickListener(CollationListener);
StartListener部分://先將0~9數字依照位置丟進temp陣列
for(int i=0;i<temp.length;i++){
    temp = i;
}
for(int i=0;i<temp.length;i++){
    //產生0~9亂數
    int select = (int)(Math.random()*10);
    //隨機選出的位置不能等於i
    int swaptemp = 0;
    if(select != i){
        swaptemp = temp;
        temp = temp;
        temp = swaptemp;
    }
}
//洗好的前四個數字塞回我們要回傳的陣列
for(int i=0;i<answer.length;i++){
    answer=temp;
}
textAnswer.setText("答案: " + answer[0] + answer[1] + answer[2] + answer[3]);
CollationListener部分:try{
    int a = 0 ,b = 0;
    String st1, st2;
    //將輸入文字轉為字串
    String ss = editAnswer.getText().toString();
    //將字串分別以字元存於陣列
    char c[] = ss.toCharArray();
    //判斷是否重覆
    if(c[0] == c[1] || c[0] == c[2] || c[0] == c[3] ||
            c[1] == c[2] || c[1] == c[3] ||
            c[2] == c[3]) {
        Toast.makeText(abgame.this, "不可輸入重覆!!,請重新輸入",
                Toast.LENGTH_SHORT).show();
        editAnswer.setText("");
    }    //最大問題點!!!!
    for(int i = 0; i < 4; i++){
        for(int j = 0; j < 4; j++){
            //數字對,位置也一樣,就是1A
            if((answer == c) && (i == j)){
                a++;
            }
                //數字對,位置不一樣,就是1B
            else if((c == answer) && i != j){
                b++;
            }
        }
    }


    st1 = "A= " + a + "B= " + b + "|" + c[0]+c[1]+c[2]+c[3];
    textAnswer.setText(st1);
}

catch (Exception e){
    //輸出錯誤訊息
    Toast.makeText(abgame.this,"輸入格式錯誤,請重新輸入",
            Toast.LENGTH_SHORT).show();
    editAnswer.setText("");
}
好的 我目前最大問題點是
因為我在答案部分 我是使用整數產生亂數再存入陣列(整數陣列)
輸入部分因為是字串 而我之後一個一個輸入陣列 所以宣告字元陣列
但目前在"最大問題點"那邊是我要判斷幾A幾B的部分
但是一個是字元字串 一個是整數字串
兩邊永遠不會完全相等 所以IF那邊不會執行
我想請問各位大大 這個部份我該如何解決...
(如有違反版規請告知)


...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

a7813195 發表於 2017-5-7 01:58 AM

雖然後來問題解決,但不打算刪文 希望能夠給各位一些想法
原先問題是在卡在一個是整數陣列 一個是字元陣列
後來我想到的方法是先把整數陣列answer~answer存入一個String 的宣告名稱中
最後在將String 宣告名稱的依照下方的方式轉存入字元陣列中
最後在相互比較
我想到的方法或許有點笨
所以不打算刪文 看大家是否有更好方法

22616846 發表於 2017-5-10 11:48 PM

String.valueOf 可以把整數 轉字串,
Character.toString,可以把字元轉字串,
再用String class 的equals 比叫是否相等。
頁: [1]