java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

shenleiwhu 2013-11-24 04:49:51
11-24 02:55:16.074: E/AndroidRuntime(1164): java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
11-24 02:55:16.074: E/AndroidRuntime(1164): at com.amaker.wlo.LoginActivity.saveUserMsg(LoginActivity.java:88)
11-24 02:55:16.074: E/AndroidRuntime(1164): at com.amaker.wlo.LoginActivity.login(LoginActivity.java:71)
11-24 02:55:16.074: E/AndroidRuntime(1164): at com.amaker.wlo.LoginActivity.access$2(LoginActivity.java:61)
11-24 02:55:16.074: E/AndroidRuntime(1164): at com.amaker.wlo.LoginActivity$2.onClick(LoginActivity.java:50)
11-24 02:55:16.074: E/AndroidRuntime(1164): at android.view.View.performClick(View.java:4424)
11-24 02:55:16.074: E/AndroidRuntime(1164): at android.view.View$PerformClick.run(View.java:18383)
11-24 02:55:16.074: E/AndroidRuntime(1164): at android.os.Handler.handleCallback(Handler.java:733)
11-24 02:55:16.074: E/AndroidRuntime(1164): at android.os.Handler.dispatchMessage(Handler.java:95)
11-24 02:55:16.074: E/AndroidRuntime(1164): at android.os.Looper.loop(Looper.java:137)
11-24 02:55:16.074: E/AndroidRuntime(1164): at android.app.ActivityThread.main(ActivityThread.java:4998)
11-24 02:55:16.074: E/AndroidRuntime(1164): at java.lang.reflect.Method.invokeNative(Native Method)
11-24 02:55:16.074: E/AndroidRuntime(1164): at java.lang.reflect.Method.invoke(Method.java:515)
11-24 02:55:16.074: E/AndroidRuntime(1164): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
11-24 02:55:16.074: E/AndroidRuntime(1164): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
11-24 02:55:16.074: E/AndroidRuntime(1164): at dalvik.system.NativeStart.main(Native Method)


之前有人提过这个问题,但是没解决好;我今天又把这个代码仔细读了下没发现数组越界啊。。。小弟新手,实在不知怎么回事。

这是其后台程序java程序

package com.amaker.wlo;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.amaker.util.HttpUtil;

public class LoginActivity extends Activity {
// 声明登录、取消按钮
private Button cancelBtn,loginBtn;
// 声明用户名、密码输入框
private EditText userEditText,pwdEditText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置标题
setTitle("掌中宝无线订餐系统-用户登录");
// 设置当前Activity界面布局
setContentView(R.layout.login_system);
// 通过findViewById方法实例化组件
cancelBtn = (Button)findViewById(R.id.cancelButton);
// 通过findViewById方法实例化组件
loginBtn = (Button)findViewById(R.id.loginButton);
// 通过findViewById方法实例化组件
userEditText = (EditText)findViewById(R.id.userEditText);
// 通过findViewById方法实例化组件
pwdEditText = (EditText)findViewById(R.id.pwdEditText);

cancelBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});

loginBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(validate()){
if(login()){
Intent intent = new Intent(LoginActivity.this,MainMenuActivity.class);
startActivity(intent);
}else{
showDialog("用户名称或者密码错误,请重新输入!");
}
}
}
});
}
// 登录方法
private boolean login(){
// 获得用户名称
String username = userEditText.getText().toString();
// 获得密码
String pwd = pwdEditText.getText().toString();
// 获得登录结果
String result=query(username,pwd);
if(result!=null&&result.equals("0")){
return false;
}else{
saveUserMsg(result);
return true;
}
}

// 将用户信息保存到配置文件
private void saveUserMsg(String msg){
// 用户编号
String id = "";
// 用户名称
String name = "";
// 获得信息数组
String[] msgs = msg.split(";");
int idx = msgs[0].indexOf("=");
id = msgs[0].substring(idx+1);
idx = msgs[1].indexOf("=");
name = msgs[1].substring(idx+1);
// 共享信息
SharedPreferences pre = getSharedPreferences("user_msg", MODE_WORLD_WRITEABLE);
SharedPreferences.Editor editor = pre.edit();
editor.putString("id", id);
editor.putString("name", name);
editor.commit();
}

// 验证方法
private boolean validate(){
String username = userEditText.getText().toString();
if(username.equals("")){
showDialog("用户名称是必填项!");
return false;
}
String pwd = pwdEditText.getText().toString();
if(pwd.equals("")){
showDialog("用户密码是必填项!");
return false;
}
return true;
}
private void showDialog(String msg){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(msg)
.setCancelable(false)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
AlertDialog alert = builder.create();
alert.show();
}
// 根据用户名称密码查询
private String query(String account,String password){
// 查询参数
String queryString = "account="+account+"&password="+password;
// url
String url = HttpUtil.BASE_URL+"servlet/LoginServlet?"+queryString;
// 查询返回结果
return HttpUtil.queryStringForPost(url);
}
}


还请


...全文
1702 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
2在路上 2013-11-25
  • 打赏
  • 举报
回复
queryStringForPost这个返回的什么值贴一下
MR__P 2013-11-25
  • 打赏
  • 举报
回复
引用 楼主 shenlei190810 的回复:
11-24 02:55:16.074: E/AndroidRuntime(1164): java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 11-24 02:55:16.074: E/AndroidRuntime(1164): at com.amaker.wlo.LoginActivity.saveUserMsg(LoginActivity.java:88) 11-24 02:55:16.074: E/AndroidRuntime(1164): at com.amaker.wlo.LoginActivity.login(LoginActivity.java:71) 11-24 02:55:16.074: E/AndroidRuntime(1164): at com.amaker.wlo.LoginActivity.access$2(LoginActivity.java:61) 11-24 02:55:16.074: E/AndroidRuntime(1164): at com.amaker.wlo.LoginActivity$2.onClick(LoginActivity.java:50) 11-24 02:55:16.074: E/AndroidRuntime(1164): at android.view.View.performClick(View.java:4424) 11-24 02:55:16.074: E/AndroidRuntime(1164): at android.view.View$PerformClick.run(View.java:18383) 11-24 02:55:16.074: E/AndroidRuntime(1164): at android.os.Handler.handleCallback(Handler.java:733) 11-24 02:55:16.074: E/AndroidRuntime(1164): at android.os.Handler.dispatchMessage(Handler.java:95) 11-24 02:55:16.074: E/AndroidRuntime(1164): at android.os.Looper.loop(Looper.java:137) 11-24 02:55:16.074: E/AndroidRuntime(1164): at android.app.ActivityThread.main(ActivityThread.java:4998) 11-24 02:55:16.074: E/AndroidRuntime(1164): at java.lang.reflect.Method.invokeNative(Native Method) 11-24 02:55:16.074: E/AndroidRuntime(1164): at java.lang.reflect.Method.invoke(Method.java:515) 11-24 02:55:16.074: E/AndroidRuntime(1164): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 11-24 02:55:16.074: E/AndroidRuntime(1164): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 11-24 02:55:16.074: E/AndroidRuntime(1164): at dalvik.system.NativeStart.main(Native Method) 之前有人提过这个问题,但是没解决好;我今天又把这个代码仔细读了下没发现数组越界啊。。。小弟新手,实在不知怎么回事。 这是其后台程序java程序
package com.amaker.wlo;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.amaker.util.HttpUtil;

public class LoginActivity extends Activity {
	// 声明登录、取消按钮
	private Button cancelBtn,loginBtn;
	// 声明用户名、密码输入框
	private EditText userEditText,pwdEditText;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 设置标题
		setTitle("掌中宝无线订餐系统-用户登录");
		// 设置当前Activity界面布局
		setContentView(R.layout.login_system);
		// 通过findViewById方法实例化组件
		cancelBtn = (Button)findViewById(R.id.cancelButton);
		// 通过findViewById方法实例化组件
		loginBtn = (Button)findViewById(R.id.loginButton);
		// 通过findViewById方法实例化组件
		userEditText = (EditText)findViewById(R.id.userEditText);
		// 通过findViewById方法实例化组件
		pwdEditText = (EditText)findViewById(R.id.pwdEditText);
		
		cancelBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				finish();
			}
		});
		
		loginBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				if(validate()){
					if(login()){
						Intent intent = new Intent(LoginActivity.this,MainMenuActivity.class);
						startActivity(intent);
					}else{
						showDialog("用户名称或者密码错误,请重新输入!");
					}
				}
			}
		});
	}
	// 登录方法
	private boolean login(){
		// 获得用户名称
		String username = userEditText.getText().toString();
		// 获得密码
		String pwd = pwdEditText.getText().toString();
		// 获得登录结果
		String result=query(username,pwd);
		if(result!=null&&result.equals("0")){
			return false;
		}else{
			saveUserMsg(result);
			return true;
		}
	}
	
	// 将用户信息保存到配置文件
	private void saveUserMsg(String msg){
		// 用户编号
		String id = "";
		// 用户名称
		String name = "";
		// 获得信息数组
		String[] msgs = msg.split(";");
		int idx = msgs[0].indexOf("=");
		id = msgs[0].substring(idx+1);
		idx = msgs[1].indexOf("=");
		name = msgs[1].substring(idx+1);
		// 共享信息
		SharedPreferences pre = getSharedPreferences("user_msg", MODE_WORLD_WRITEABLE);
		SharedPreferences.Editor editor = pre.edit();
		editor.putString("id", id);
		editor.putString("name", name);
		editor.commit();
	}
	
	// 验证方法
	private boolean validate(){
		String username = userEditText.getText().toString();
		if(username.equals("")){
			showDialog("用户名称是必填项!");
			return false;
		}
		String pwd = pwdEditText.getText().toString();
		if(pwd.equals("")){
			showDialog("用户密码是必填项!");
			return false;
		}
		return true;
	}
	private void showDialog(String msg){
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setMessage(msg)
		       .setCancelable(false)
		       .setPositiveButton("确定", new DialogInterface.OnClickListener() {
		           public void onClick(DialogInterface dialog, int id) {
		           }
		       });
		AlertDialog alert = builder.create();
		alert.show();
	}
	// 根据用户名称密码查询
	private String query(String account,String password){
		// 查询参数
		String queryString = "account="+account+"&password="+password;
		// url
		String url = HttpUtil.BASE_URL+"servlet/LoginServlet?"+queryString;
		// 查询返回结果
		return HttpUtil.queryStringForPost(url);
    }
}
还请
请求到得字符串是什么结构的,麻烦贴一下
MR__P 2013-11-25
  • 打赏
  • 举报
回复
引用 3 楼 shenlei190810 的回复:
11-24 05:34:05.278: D/AndroidRuntime(1437): Shutting down VM 11-24 05:34:05.288: W/dalvikvm(1437): threadid=1: thread exiting with uncaught exception (group=0xb1a9fb90) 11-24 05:34:05.338: E/AndroidRuntime(1437): FATAL EXCEPTION: main 11-24 05:34:05.338: E/AndroidRuntime(1437): Process: com.amaker.wlo, PID: 1437 11-24 05:34:05.338: E/AndroidRuntime(1437): java.lang.NullPointerException 11-24 05:34:05.338: E/AndroidRuntime(1437): at com.android.internal.os.LoggingPrintStream.println(LoggingPrintStream.java:298) 11-24 05:34:05.338: E/AndroidRuntime(1437): at com.amaker.wlo.LoginActivity.saveUserMsg(LoginActivity.java:79) 11-24 05:34:05.338: E/AndroidRuntime(1437): at com.amaker.wlo.LoginActivity.login(LoginActivity.java:71) 11-24 05:34:05.338: E/AndroidRuntime(1437): at com.amaker.wlo.LoginActivity.access$2(LoginActivity.java:61) 11-24 05:34:05.338: E/AndroidRuntime(1437): at com.amaker.wlo.LoginActivity$2.onClick(LoginActivity.java:50) 11-24 05:34:05.338: E/AndroidRuntime(1437): at android.view.View.performClick(View.java:4424) 11-24 05:34:05.338: E/AndroidRuntime(1437): at android.view.View$PerformClick.run(View.java:18383) 11-24 05:34:05.338: E/AndroidRuntime(1437): at android.os.Handler.handleCallback(Handler.java:733) 11-24 05:34:05.338: E/AndroidRuntime(1437): at android.os.Handler.dispatchMessage(Handler.java:95) 11-24 05:34:05.338: E/AndroidRuntime(1437): at android.os.Looper.loop(Looper.java:137) 11-24 05:34:05.338: E/AndroidRuntime(1437): at android.app.ActivityThread.main(ActivityThread.java:4998) 11-24 05:34:05.338: E/AndroidRuntime(1437): at java.lang.reflect.Method.invokeNative(Native Method) 11-24 05:34:05.338: E/AndroidRuntime(1437): at java.lang.reflect.Method.invoke(Method.java:515) 11-24 05:34:05.338: E/AndroidRuntime(1437): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 11-24 05:34:05.338: E/AndroidRuntime(1437): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 11-24 05:34:05.338: E/AndroidRuntime(1437): at dalvik.system.NativeStart.main(Native Method)
怎么又空指针了
shenleiwhu 2013-11-24
  • 打赏
  • 举报
回复
11-24 05:34:05.278: D/AndroidRuntime(1437): Shutting down VM 11-24 05:34:05.288: W/dalvikvm(1437): threadid=1: thread exiting with uncaught exception (group=0xb1a9fb90) 11-24 05:34:05.338: E/AndroidRuntime(1437): FATAL EXCEPTION: main 11-24 05:34:05.338: E/AndroidRuntime(1437): Process: com.amaker.wlo, PID: 1437 11-24 05:34:05.338: E/AndroidRuntime(1437): java.lang.NullPointerException 11-24 05:34:05.338: E/AndroidRuntime(1437): at com.android.internal.os.LoggingPrintStream.println(LoggingPrintStream.java:298) 11-24 05:34:05.338: E/AndroidRuntime(1437): at com.amaker.wlo.LoginActivity.saveUserMsg(LoginActivity.java:79) 11-24 05:34:05.338: E/AndroidRuntime(1437): at com.amaker.wlo.LoginActivity.login(LoginActivity.java:71) 11-24 05:34:05.338: E/AndroidRuntime(1437): at com.amaker.wlo.LoginActivity.access$2(LoginActivity.java:61) 11-24 05:34:05.338: E/AndroidRuntime(1437): at com.amaker.wlo.LoginActivity$2.onClick(LoginActivity.java:50) 11-24 05:34:05.338: E/AndroidRuntime(1437): at android.view.View.performClick(View.java:4424) 11-24 05:34:05.338: E/AndroidRuntime(1437): at android.view.View$PerformClick.run(View.java:18383) 11-24 05:34:05.338: E/AndroidRuntime(1437): at android.os.Handler.handleCallback(Handler.java:733) 11-24 05:34:05.338: E/AndroidRuntime(1437): at android.os.Handler.dispatchMessage(Handler.java:95) 11-24 05:34:05.338: E/AndroidRuntime(1437): at android.os.Looper.loop(Looper.java:137) 11-24 05:34:05.338: E/AndroidRuntime(1437): at android.app.ActivityThread.main(ActivityThread.java:4998) 11-24 05:34:05.338: E/AndroidRuntime(1437): at java.lang.reflect.Method.invokeNative(Native Method) 11-24 05:34:05.338: E/AndroidRuntime(1437): at java.lang.reflect.Method.invoke(Method.java:515) 11-24 05:34:05.338: E/AndroidRuntime(1437): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 11-24 05:34:05.338: E/AndroidRuntime(1437): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 11-24 05:34:05.338: E/AndroidRuntime(1437): at dalvik.system.NativeStart.main(Native Method)
shenleiwhu 2013-11-24
  • 打赏
  • 举报
回复
引用 1 楼 hjywyj 的回复:
你确定msgs的length>=2 ????????
我现在来测试下,请问我直接用电脑上的虚拟机来访问服务器,是不是ip地址要设置成10.0.0.2;服务器访问数据库localhost还能用吗?
  • 打赏
  • 举报
回复
你确定msgs的length>=2 ????????

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧