android运行时错误?

android运行时错误?,android,android-activity,Android,Android Activity,下面的程序试图从第一个编辑框中提取一个文本并匹配单词vysh,然后在第二个编辑框中生成输出。第二个编辑框最初有点,如果每个单词都匹配单词vysh,则它将替换这些点 我在运行程序时出错,错误如下: 09-14 19:47:25.593: D/AndroidRuntime(469): Shutting down VM 09-14 19:47:25.593: W/dalvikvm(469): threadid=1: thread exiting with uncaught exception (gro

下面的程序试图从第一个编辑框中提取一个文本并匹配单词vysh,然后在第二个编辑框中生成输出。第二个编辑框最初有点,如果每个单词都匹配单词vysh,则它将替换这些点

我在运行程序时出错,错误如下:

09-14 19:47:25.593: D/AndroidRuntime(469): Shutting down VM
09-14 19:47:25.593: W/dalvikvm(469): threadid=1: thread exiting with uncaught exception (group=0x40014760)
09-14 19:47:25.593: E/AndroidRuntime(469): FATAL EXCEPTION: main
09-14 19:47:25.593: E/AndroidRuntime(469): java.lang.NullPointerException
09-14 19:47:25.593: E/AndroidRuntime(469):  at java.lang.String.<init>(String.java:505)
09-14 19:47:25.593: E/AndroidRuntime(469):  at com.example.testinput.MainActivity$1.onClick(MainActivity.java:46)
09-14 19:47:25.593: E/AndroidRuntime(469):  at android.view.View.performClick(View.java:3110)
09-14 19:47:25.593: E/AndroidRuntime(469):  at android.view.View$PerformClick.run(View.java:11934)
09-14 19:47:25.593: E/AndroidRuntime(469):  at android.os.Handler.handleCallback(Handler.java:587)
09-14 19:47:25.593: E/AndroidRuntime(469):  at android.os.Handler.dispatchMessage(Handler.java:92)
09-14 19:47:25.593: E/AndroidRuntime(469):  at android.os.Looper.loop(Looper.java:132)
09-14 19:47:25.593: E/AndroidRuntime(469):  at android.app.ActivityThread.main(ActivityThread.java:4123)
09-14 19:47:25.593: E/AndroidRuntime(469):  at java.lang.reflect.Method.invokeNative(Native Method)
09-14 19:47:25.593: E/AndroidRuntime(469):  at java.lang.reflect.Method.invoke(Method.java:491)
09-14 19:47:25.593: E/AndroidRuntime(469):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
09-14 19:47:25.593: E/AndroidRuntime(469):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
09-14 19:47:25.593: E/AndroidRuntime(469):  at dalvik.system.NativeStart.main(Native Method)
09-14 19:47:30.175: I/Process(469): Sending signal. PID: 469 SIG: 9
09-1419:47:25.593:D/AndroidRuntime(469):关闭虚拟机
09-14 19:47:25.593:W/dalvikvm(469):threadid=1:线程以未捕获异常退出(组=0x40014760)
09-1419:47:25.593:E/AndroidRuntime(469):致命异常:main
09-14 19:47:25.593:E/AndroidRuntime(469):java.lang.NullPointerException
09-1419:47:25.593:E/AndroidRuntime(469):在java.lang.String.(String.java:505)
09-14 19:47:25.593:E/AndroidRuntime(469):在com.example.testinput.MainActivity$1.onClick(MainActivity.java:46)
09-14 19:47:25.593:E/AndroidRuntime(469):在android.view.view.performClick(view.java:3110)
09-14 19:47:25.593:E/AndroidRuntime(469):在android.view.view$PerformClick.run(view.java:11934)
09-14 19:47:25.593:E/AndroidRuntime(469):在android.os.Handler.handleCallback(Handler.java:587)
09-14 19:47:25.593:E/AndroidRuntime(469):在android.os.Handler.dispatchMessage(Handler.java:92)上
09-14 19:47:25.593:E/AndroidRuntime(469):在android.os.Looper.loop(Looper.java:132)上
09-14 19:47:25.593:E/AndroidRuntime(469):位于android.app.ActivityThread.main(ActivityThread.java:4123)
09-14 19:47:25.593:E/AndroidRuntime(469):位于java.lang.reflect.Method.Invokenactive(本机方法)
09-14 19:47:25.593:E/AndroidRuntime(469):位于java.lang.reflect.Method.invoke(Method.java:491)
09-14 19:47:25.593:E/AndroidRuntime(469):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
09-14 19:47:25.593:E/AndroidRuntime(469):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
9-14 19:47:25.593:E/AndroidRuntime(469):在dalvik.system.NativeStart.main(本机方法)
09-14 19:47:30.175:I/进程(469):发送信号。PID:469信号:9
程序如下所示:

package com.example.testinput;

public class MainActivity extends Activity {

String rword="vysh";
private StringBuffer gword=new StringBuffer();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    Button button=(Button) findViewById(R.id.button1);

    final EditText output=(EditText) findViewById(R.id.editText2);
  //input dots in edittext
    char positions[] = new char[rword.length()];
    for (int i=0; i<rword.length(); i++) {
        positions[i] = '.';

}
    String dots=new String(positions);
    output.setText(dots);
    //end of input dots

    button.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            EditText text=(EditText)findViewById(R.id.editText1);
                            String str="";

            str=text.getText().toString();
            if(!TextUtils.isEmpty(str))
            {           
            //String t=new String(gword);
            char a=str.charAt(0);
            //replace dots with text 
            for (int i=0; i<rword.length(); i++)
            {
                if((rword.charAt(i))==a)
                {
                    gword.setCharAt( i, a);
                }

            }
            //print the output
            output.setText(gword);
            }end of iftextutils         
        }
    }); 
     }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;}
package com.example.testinput;
公共类MainActivity扩展了活动{
字符串rword=“vysh”;
私有StringBuffer gword=新StringBuffer();
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
按钮按钮=(按钮)findViewById(R.id.button1);
最终EditText输出=(EditText)findViewById(R.id.editText2);
//在编辑文本中输入点
字符位置[]=新字符[rword.length()];

对于
String t=new String(gword);
行中的(int i=0;i),变量
gword
为null,这会导致异常。据我所知,您无论如何都没有使用
t
,因此…删除该行,或者使用简单的
new String()创建
t

您将获得一个
NullPointerException
,因为您的
gword
已声明但未初始化。 因此,初始化它,它将正常工作。请执行以下操作:

private-StringBuffer gword=new-StringBuffer();

试试这个

String str="";
str=text.getText().toString();
if(!TextUtils.isEmpty(str)){
        //String t=new String(gword);
        char a=str.charAt(0);
        //replace dots with text 
        for (int i=0; i<rword.length(); i++)
        {
            if((rword.charAt(i))==a)
            {
                gword.setCharAt( i, a);
            }

        }
        //print the output
        output.setText(gword);

}
String str=”“;
str=text.getText().toString();
如果(!TextUtils.isEmpty(str)){
//字符串t=新字符串(gword);
字符a=str.charAt(0);
//用文本替换点
对于(int i=0;i而言,正确的代码为:
包com.example.testinput;
公共类MainActivity扩展了活动{

String rword="vysh";
private StringBuffer gword=new StringBuffer();


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    Button button=(Button) findViewById(R.id.button1);

    final EditText output=(EditText) findViewById(R.id.editText2);
  //input dots in edittext
    char positions[] = new char[rword.length()];
    for (int i=0; i<rword.length(); i++) {
        positions[i] = '.';gword.append(" ");

}
    String dots=new String(positions);
    output.setText(dots);
    //end of input dots

    button.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            // to get input edibox
            EditText text=(EditText) findViewById(R.id.editText1);
            String str="";
            str=text.getText().toString();


            if(!TextUtils.isEmpty(str))
            {
            //String t=new String(gword);


            char a=str.charAt(0);
            //replace dots with text 
            for (int i=0; i<rword.length(); i++)
            {
                if((rword.charAt(i))==a)
                {
                    gword.setCharAt( i, a);


                }

            }
            //print the output
            output.setText(gword);
            }   //end of if textuitls       
        }
    }); 
     }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}    
String rword=“vysh”;
私有StringBuffer gword=新StringBuffer();
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
按钮按钮=(按钮)findViewById(R.id.button1);
最终EditText输出=(EditText)findViewById(R.id.editText2);
//在编辑文本中输入点
字符位置[]=新字符[rword.length()];

for(int i=0;单击按钮后输出该单词…..学习读取堆栈跟踪。它清楚地显示“(MainActivity.java:46)”查找NPE尝试了你的解决方案,但它不起作用。请检查上面。尝试了下面的解决方案它不起作用…我得到以下错误:嘿,现在尝试了…它仍然不起作用。发布了上面的错误。这是一个不同的错误。gword是空的,所以你不能在位置3设置字符。这会导致IndexOutOfBounds异常选项。最简单的解决方案是使用大量空格初始化gword。将此行直接添加到位置[i]='.';:
gword.append(“”;
)之后。这将为您提供一个包含所有空格的gword,以便setCharAt()不再失败。