iT邦幫忙

0

新手Android Studio code問題~

package com.example.win10.createid;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;

import java.util.Random;

public class MainActivity extends AppCompatActivity{
private Button b1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    b1=(Button) findViewById(R.id.b1);
}
public void creat(View v){
    TextView tx1,tx2,tx3,tx4,tx5,tx6,tx7,tx8,tx9,tx10;
    EditText ed1,ed2;
    String F,S,s ;
    int first ,second,all=0;
    Random ran = new Random();
    int[] number = new int[11];
    tx1=findViewById(R.id.tx1);
    tx2=findViewById(R.id.tx2);
    tx3=findViewById(R.id.tx3);
    tx4=findViewById(R.id.tx4);
    tx5=findViewById(R.id.tx5);
    tx6=findViewById(R.id.tx6);
    tx7=findViewById(R.id.tx7);
    tx8=findViewById(R.id.tx8);
    tx9=findViewById(R.id.tx9);
    tx10=findViewById(R.id.tx10);
    ed1=findViewById(R.id.ed1);
    ed2=findViewById(R.id.ed2);
    F=ed1.getText().toString();
    S=ed2.getText().toString();
   if (F.equals(" 臺北市 ")) {
       first = 1;
       second = 0;
   }
    else if (F.equals(" 臺中市 ")) {
       first = 1;
       second = 1;
   }
   else if (F.equals(" 基隆市 ")) {
       first = 1;
       second = 2;
   }
   else if (F.equals(" 臺南市 ")) {
       first = 1;
       second = 3;
   }
   else if (F.equals(" 高雄市 ")) {
       first = 1;
       second = 4;
   }
   else if (F.equals(" 新北市 ")) {
       first = 1;
       second = 5;
   }
        else
            first=1;
            second=0;

    number[0]=first;
    number[1]=second*9;


    if(S.equals("男")){
        number[2]=1*8;

    }
    else
        number[2]=2*8;


    while(all%10==0){
        number [3] =ran.nextInt(9)*7;
        number [4] =ran.nextInt(9)*6;
        number [5] =ran.nextInt(9)*5;
        number [6] =ran.nextInt(9)*4;
        number [7] =ran.nextInt(9)*3;
        number [8] =ran.nextInt(9)*2;
        number [9] =ran.nextInt(9)*1;
        number [10] =ran.nextInt(9);

        for(int t=0;t<=10;t++)
            all +=number[t];
    }
    number [2]/=8;
    number [3]/=7;
    number [4]/=6;
    number [5]/=5;
    number [6]/=4;
    number [7]/=3;
    number [8]/=2;


    if(F.equals("新北市")){
        s="F";
    }
    else if(F.equals("臺北市")){
        s="A";
    }
    else if(F.equals("臺中市")){
        s="B";
    }
    else if(F.equals("基隆市")){
        s="C";
    }
    else if(F.equals("臺南市")){
        s="D";
    }
    else if(F.equals("高雄市")){
        s="E";
    }
    else
        s="A";


    number.toString();
    tx1.setText(s);
    for (int a=2;a<=10;a++) {
        tx2.setText(number[a]);
        tx3.setText(number[a]);
        tx4.setText(number[a]);
        tx5.setText(number[a]);
        tx6.setText(number[a]);
        tx7.setText(number[a]);
        tx8.setText(number[a]);
        tx9.setText(number[a]);
        tx10.setText(number[a]);
    }




}

}

安安 這是我的code 最近剛想了解一下 如何做app
所以就把我寫java的一個小專案 身分證製造機拿來 使用
卻不知道套在android studio 上哪裡出問題
一點擊button就跳出程式

weiclin iT邦高手 4 級 ‧ 2018-03-26 13:20:46 檢舉
貼這 code 是給大家做視力測驗嗎?
竹本立里 iT邦研究生 5 級 ‧ 2018-03-26 13:24:55 檢舉
貼這 code 是給大家做視力測驗 (肯定貌)

1 個回答

1
暐翰
iT邦大師 1 級 ‧ 2018-03-26 13:24:33
最佳解答

連結: Android Studio 偵錯模式

先從懷疑button事件開始的地方debug跑過一次
用try catch把exception裡面的message PO上來
這樣才能解決問題

看更多先前的回應...收起先前的回應...
陳同學 iT邦新手 5 級 ‧ 2018-03-26 14:00:40 檢舉

不好意思 剛自學半年左右 我知道try catch 但不知道 怎套用- -

暐翰 iT邦大師 1 級 ‧ 2018-03-26 14:20:34 檢舉

舉例:
我寫幾行java,運行的時候會出現錯誤

我想要知道他出錯在哪
我可以用try catch來包住code區塊

或者進一步用debug模式
一行一行運行下去看變化

陳同學 iT邦新手 5 級 ‧ 2018-03-26 14:22:56 檢舉

想請問一下 try catch 用途是在1:假使程式輸入 (try)我規定以外的東西 catch就 執行 裡面的動作
還是 try catch 是給人家看錯誤的~
抑或是兩個都有~

暐翰 iT邦大師 1 級 ‧ 2018-03-26 14:26:27 檢舉

兩者都有
你可以在catch裡面把錯誤處理,讓程式正常運作
或是捕捉非預料錯誤查詢

陳同學 iT邦新手 5 級 ‧ 2018-03-26 14:27:10 檢舉

非常不好意思 我只知道這概念 但尚未使用過 我的code有重新貼了
如果你願意 可以示範一次給我看嗎QAQ

暐翰 iT邦大師 1 級 ‧ 2018-03-26 14:32:51 檢舉
package com.example.win10.createid;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;

import java.util.Random;

public class MainActivity extends AppCompatActivity{
  private Button b1;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      try {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b1=(Button) findViewById(R.id.b1);
      } catch (Exception e) {
        Log.d(e.toString());
      }
  }
  public void creat(View v){
      try {
        TextView tx1,tx2,tx3,tx4,tx5,tx6,tx7,tx8,tx9,tx10;
        EditText ed1,ed2;
        //........
      } catch (Exception e) {
        Log.d(e.toString());
      }
  }
}
陳同學 iT邦新手 5 級 ‧ 2018-03-26 14:40:56 檢舉

e.toString() 那邊發生了紅字 cant resolve method java.lang.exception
剛上網爬過了 都看不太懂....

暐翰 iT邦大師 1 級 ‧ 2018-03-26 14:47:50 檢舉
e.toString()

換成

e.printStackTrace();

然後按Shift + F12在console看error在第幾行,或是PO上來

或是改成

StackTraceElement[] err_objs = e.getStackTrace();
StringBuilder err_msg = new StringBuilder();
for (StackTraceElement stackTraceElement : err_objs) {
    err_msg.append(stackTraceElement);
}
System.out.println(
    "錯誤訊息 : " + e.toString() + "\n"
    + "詳細錯誤訊息: "  + err_msg.toString()
);
陳同學 iT邦新手 5 級 ‧ 2018-03-26 18:08:25 檢舉

不好意思 剛剛在上課 只不過 都還是紅字耶....

暐翰 iT邦大師 1 級 ‧ 2018-03-26 18:10:51 檢舉

對 紅字內容是重點
他會告訴你錯在第幾行

陳同學 iT邦新手 5 級 ‧ 2018-03-26 18:37:39 檢舉

https://ithelp.ithome.com.tw/upload/images/20180326/2010882280pvTQilGG.png

暐翰 iT邦大師 1 級 ‧ 2018-03-26 18:41:20 檢舉

改成

  public void creat(View v){
      try {
        TextView tx1,tx2,tx3,tx4,tx5,tx6,tx7,tx8,tx9,tx10;
        EditText ed1,ed2;
        //........
      } catch (Exception e) {
        StackTraceElement[] err_objs = e.getStackTrace();
        StringBuilder err_msg = new StringBuilder();
        for (StackTraceElement stackTraceElement : err_objs) {
            err_msg.append(stackTraceElement);
        }
        Log.d(
            "錯誤訊息 : " + e.toString() + "\n"
            + "詳細錯誤訊息: "  + err_msg.toString()
        );
      }
  }

或是

  public void creat(View v){
      try {
        TextView tx1,tx2,tx3,tx4,tx5,tx6,tx7,tx8,tx9,tx10;
        EditText ed1,ed2;
        //........
      } catch (Exception e) {
        e.printStackTrace();
      }
  }

才對

陳同學 iT邦新手 5 級 ‧ 2018-03-26 18:54:28 檢舉

https://ithelp.ithome.com.tw/upload/images/20180326/201088229x00coLLqJ.png

暐翰 iT邦大師 1 級 ‧ 2018-03-26 18:59:03 檢舉

Compiler error: “class, interface, or enum expected”
你這個是compiler編譯前錯誤,找代碼下面有紅色蟲線的
IDE會幫你標出來

這個錯誤是無法.java檔案因為代碼有寫出意料中的錯誤,所以編輯器不幫你編譯成.class檔案

陳同學 iT邦新手 5 級 ‧ 2018-03-26 19:01:08 檢舉

沒一個代碼是紅的

陳同學 iT邦新手 5 級 ‧ 2018-03-26 19:05:37 檢舉

https://ithelp.ithome.com.tw/upload/images/20180326/20108822weHsBhaIBv.png

暐翰 iT邦大師 1 級 ‧ 2018-03-26 19:17:05 檢舉

按button有程式崩潰?
參考:【 debug in Android studio 】https://goo.gl/GVM5rq
照這個設紅點跑一輪debug

陳同學 iT邦新手 5 級 ‧ 2018-03-26 19:35:19 檢舉

安安 我debug後 他現在不會跳出去了 但是還是沒有我想要的效果

暐翰 iT邦大師 1 級 ‧ 2018-03-26 21:26:10 檢舉

要什麼效果?

陳同學 iT邦新手 5 級 ‧ 2018-03-27 21:46:43 檢舉

我要的是 讓他們出現我產生的身分證

陳同學 iT邦新手 5 級 ‧ 2018-03-27 21:48:40 檢舉

這CODE是我在練習JAVA寫的 但是套在ANDROID STUDIO有些許不同
像是ALL那邊 我JAVA是沒有 設定數字的 這邊要求設定數字 後面我改DO WHILE還是不行 只有 第一碼 英文有跑出來 剩下的 數字沒出現

我要發表回答

立即登入回答