Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 它显示了",;“请停止”;_Java_Android_Numbers_Factors - Fatal编程技术网

Java 它显示了",;“请停止”;

Java 它显示了",;“请停止”;,java,android,numbers,factors,Java,Android,Numbers,Factors,此代码不包含错误,但在运行时显示“不幸停止”。 代码用于查找数字的因子;我知道这应该很简单,但我是android技术新手,我需要一些帮助 public class MainActivity extends Activity { EditText edttxt; Button btn; int i=0 ; String str; TextView textview1; @Override protected void onCreate(Bun

此代码不包含错误,但在运行时显示“不幸停止”。 代码用于查找数字的因子;我知道这应该很简单,但我是android技术新手,我需要一些帮助

public class MainActivity extends Activity {
    EditText edttxt;
    Button btn;
    int i=0 ;
    String str;
    TextView textview1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edttxt=(EditText)findViewById(R.id.editText1);
        btn=(Button)findViewById(R.id.button1);
        textview1=(TextView)findViewById(R.id.textView1);
        btn.setOnClickListener(new View.OnClickListener()  {
            @Override
            public void onClick(View arg0) {
                ArrayList<Integer> a=new ArrayList<Integer>();
                i=Integer.parseInt(edttxt.getText().toString());
                if(i==0)
                {
                    Toast.makeText(getBaseContext(), "invalid",Toast.LENGTH_SHORT).show();    
                }
                else
                {
                    for(int j=2;j<(i/2);j++)
                    {
                        if(i%j==0)
                        {
                            a.add(j);
                        }
                    }
                    int arraylistSize = a.size();
                    for(int i = 0; i < arraylistSize; i++) {
                        textview1.setText(a.get(i));
                        textview1.setText("*");
                    }
                }
            }                
        }
        );
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}
根据您在调试日志中看到的消息,emulator存在问题,可以将其过滤掉。我还不确定真正的问题是什么,但一个问题是代码

int arraylistSize = a.size();
for(int i = 0; i < arraylistSize; i++) {
    textview1.setText(a.get(i));
    textview1.setText("*");
 }
与:


因为这将保护代码,但仍会告诉您失败的原因。

此代码不包含错误,但在运行时显示“不幸停止”
。如果您正在学习,您应该了解编译时错误和运行时错误之间的区别。您的代码确实包含错误,否则将正常运行。在修复所有编译时错误之前,您无法获得运行时错误。您发布了logcat的错误部分。请再次查找异常堆栈跟踪。如果你不知道怎么做,那么请使用谷歌。你发布的Logcat输出不是我们想要的。运行应用程序。让它崩溃吧。转到Logcat视图。从“致命异常:main”开始复制并粘贴跟踪,直到结束。另外,在解析之前,请检查
EditText
中的“”(空字符串)。回答得好。但你忽略了一个细节。这将产生类似
4*2*1*
的输出。预期输出应该是
4*2*1
。对循环的
进行更改以解决此问题。此外,建议用户在将其解析为
整数之前,检查
编辑文本中的
”(空字符串)
。否则,将在运行时抛出
NumberFormatException
int arraylistSize = a.size();
for(int i = 0; i < arraylistSize; i++) {
    textview1.setText(a.get(i));
    textview1.setText("*");
 }
int arraylistSize = a.size();
StringBuffer sb = new StringBuffer();
for(int i = 0; i < arraylistSize; i++) {
    sb.append(a.get(i));
    if (i != arraylistSize -1)
    {
        sb.append("*");
    }
 }
textview1.setText(sb.toString());
i=Integer.parseInt(edttxt.getText().toString());
try
{
    if (edttxt.getText() != null && edttxt.getText().toString() != null)
    {
        i=Integer.parseInt(edttxt.getText().toString());
    }
}
catch (Exception ex)
{
    Log.e("usbEffects", "Error parsing", ex);
    i=0;
}