package com.instruction;
import android.app.*;
import android.os.*;
import android.widget.*;
import android.text.*;
import android.view.View.*;
import android.view.*;
import android.content.*;
import android.util.*;
public class MainActivity extends Activity
{ EditText so;
int a,b=0;
Button so_bu;
char so_s[][]=new char[20][10];
char so_t[][]=new char[1][10];
String sc=new String(),scan=new String();
@Override
protected void onCreate(Bundle savedInstanceState)
{
so_s[0]="1234".toCharArray();
sc=new String(so_s[0]);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
so=(EditText)findViewById(R.id.main_so);
so.addTextChangedListener(new TextWatcher(){
public void beforeTextChanged(CharSequence s,int a,int b,int c){
}
public void onTextChanged(CharSequence s,int a,int b,int c){
scan=s.toString();
//Toast.makeText(MainActivity.this,sc,Toast.LENGTH_SHORT).show();
}
public void afterTextChanged(Editable s){
}
});
so_bu=(Button)findViewById(R.id.main_button_so);
so_bu.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
a=scan.length();
int n=0,i=0,j=0;
so_t[0]=scan.toCharArray();
for(i=0;i<20;i++){
for(j=0;j<10;j++){
if(so_t[0][n]==so_s[i][j]){
if(n==a-1){
b=1;
break;
}else
n++;
}
}
if(b==1)
break;
}
if(b==1){
Intent son=new Intent(MainActivity.this,interActivity.class);
startActivity(son);
}else
Toast.makeText(MainActivity.this,"沒有找到該符合結果",Toast.LENGTH_SHORT).show();
}
});
}
}
以上是我寫的一些代碼。,我這個效果是在輸入框那里輸入結果之后點擊按鈕。如果有相符合的文字就跳轉頁面。,否則就會輸出,沒有找到該結果。,但是我輸入的時候如果有符合的結果確實沒有什么問題。但沒有相符合的結果的時候就會閃退。也沒說出那句話。不知道為什么。我百度了好久都沒找到答案,求好心人幫忙。
兩張圖是運行日志。





uj5u.com熱心網友回復:
陣列越界了,當你沒輸入字符就點擊按鈕的時候,scan就是空“”字串,所以scan.length()=0,所以你視圖獲取so_t[0][n]就會報錯uj5u.com熱心網友回復:
public class MainActivity extends Activity {@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText so = (EditText) findViewById(R.id.main_so);
Button so_bu = (Button) findViewById(R.id.main_button_so);
so_bu.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (so.getText().toString().equals("1234")) {
Intent son = new Intent(MainActivity.this, interActivity.class);
startActivity(son);
} else {
Toast.makeText(MainActivity.this, "沒有找到該符合結果", Toast.LENGTH_SHORT).show();
}
}
});
}
}
uj5u.com熱心網友回復:
定義的陣列在好幾處都重新賦值了,不但改變了其值,并且改變了它的長度。所以在for回圈時會出現下標越界。大致看了下你是想比較兩個字串的值是不是相同。2樓的回復中提到的equals方法更好些。
uj5u.com熱心網友回復:
那要怎么解決?



uj5u.com熱心網友回復:
數值越界,51行錯誤uj5u.com熱心網友回復:
java.lang.ArrayIndexOutOfBoundsException: length=0; index=0陣列越界
for(i=0;i<20;i++){
for(j=0;j<10;j++){
if(so_t[0][n]==so_s[i][j]){
if(n==a-1){
b=1;
break;
}else
n++;
}
}
so_s[i][j],你這設定的最大,j可以是9,然而你的so_s 的最大長度就是4 “so_s[0]="1234".toCharArray();”
所以你輸入錯誤so_s[i][j]就報錯
當你什么都不輸入的時候,so_t[0]=scan.toCharArray();是沒有資料的,長度為0,所以so_t[0][n]報錯
注意:so_s[0]="1234".toCharArray(); 表示把你定義的so_s[0] 10個長度的陣列替換為了 "1234".toCharArray() 即4個長度的陣列
你可以改成:
//需要 so_s[0]的長度大于等于"1234".toCharArray().length 才不會陣列越界報錯
for(int i = 0;i<"1234".toCharArray().length;i++){
so_s[0][i] = "1234".toCharArray()[i];
}
然后
if(so_t[0].length>0){
for(i=0;i<20;i++){
for(j=0;j<10;j++){
}
}
}
這樣改后輸入1,12,13,14,123,124,124,134,1234,2,23,24,234,3,34, 都符合,其他都不符合,不知道這是不是你要的設計效果
uj5u.com熱心網友回復:
如果你想完全相等才算正確的話,可以這樣做:import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Main2Activity extends Activity {
EditText so;
Button so_bu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
so=(EditText)findViewById(R.id.main_so);
so_bu=(Button)findViewById(R.id.main_button_so);
so_bu.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
String str = "1234";
String input = so.getText().toString().trim();
if(!input.isEmpty()){
if(input.equals(str)){
Toast.makeText(Main2Activity.this,"輸入正確",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(Main2Activity.this,"輸入錯誤",Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(Main2Activity.this,"輸入為空",Toast.LENGTH_SHORT).show();
}
}
});
}
}
uj5u.com熱心網友回復:
感謝各位的解答。


轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/129102.html
標籤:Android
上一篇:有了解互聯網廣告聯盟的廣告的嗎
