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就跳出程式
先從懷疑button事件開始的地方debug跑過一次
用try catch把exception裡面的message PO上來
這樣才能解決問題
不好意思 剛自學半年左右 我知道try catch 但不知道 怎套用- -
舉例:
我寫幾行java,運行的時候會出現錯誤
我想要知道他出錯在哪
我可以用try catch來包住code區塊
或者進一步用debug模式
一行一行運行下去看變化
想請問一下 try catch 用途是在1:假使程式輸入 (try)我規定以外的東西 catch就 執行 裡面的動作
還是 try catch 是給人家看錯誤的~
抑或是兩個都有~
兩者都有
你可以在catch裡面把錯誤處理,讓程式正常運作
或是捕捉非預料錯誤查詢
非常不好意思 我只知道這概念 但尚未使用過 我的code有重新貼了
如果你願意 可以示範一次給我看嗎QAQ
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());
}
}
}
e.toString() 那邊發生了紅字 cant resolve method java.lang.exception
剛上網爬過了 都看不太懂....
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()
);
不好意思 剛剛在上課 只不過 都還是紅字耶....
對 紅字內容是重點
他會告訴你錯在第幾行
改成
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();
}
}
才對
Compiler error: “class, interface, or enum expected”
你這個是compiler編譯前錯誤,找代碼下面有紅色蟲線的
IDE會幫你標出來
這個錯誤是無法.java檔案因為代碼有寫出意料中的錯誤,所以編輯器不幫你編譯成.class檔案
沒一個代碼是紅的
按button有程式崩潰?
參考:【 debug in Android studio 】https://goo.gl/GVM5rq
照這個設紅點跑一輪debug
安安 我debug後 他現在不會跳出去了 但是還是沒有我想要的效果