Java 它显示了",;“请停止”;
此代码不包含错误,但在运行时显示“不幸停止”。 代码用于查找数字的因子;我知道这应该很简单,但我是android技术新手,我需要一些帮助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
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;
}