Java 如果数字大于9,则崩溃
我的应用程序有一个输入,用户可以输入端口号,出于好奇,我尝试输入9位以上的数字(例如:1234567890),应用程序将崩溃。如何防止它崩溃 编辑 我正在使用Android的Java语言 编码Java 如果数字大于9,则崩溃,java,android,numbers,Java,Android,Numbers,我的应用程序有一个输入,用户可以输入端口号,出于好奇,我尝试输入9位以上的数字(例如:1234567890),应用程序将崩溃。如何防止它崩溃 编辑 我正在使用Android的Java语言 编码 public class addActivity extends Activity{ EditText savedName,savedIP,savedPort,savedUserID,savedUserPass,savedChannel; Button btnSave; Button btn
public class addActivity extends Activity{
EditText savedName,savedIP,savedPort,savedUserID,savedUserPass,savedChannel;
Button btnSave;
Button btnBack;
String addressList;
FileOutputStream outputStream;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
savedName = (EditText)findViewById(R.id.editName);
savedIP = (EditText)findViewById(R.id.editIP);
savedPort = (EditText)findViewById(R.id.editPort);
savedUserID = (EditText)findViewById(R.id.userID);
savedUserPass = (EditText)findViewById(R.id.userPass);
savedChannel = (EditText)findViewById(R.id.editChannel);
btnSave = (Button)findViewById(R.id.btnSave);
btnBack = (Button)findViewById(R.id.btnBack);
try{
String channelNumString = savedChannel.getText().toString();
int channelNum = Integer.parseInt(String.valueOf(channelNumString));
addressList = savedName.getText().toString();
outputStream = openFileOutput(addressList, Context.MODE_PRIVATE);
//outputStream.write(savedName.getText().toString().getBytes());
outputStream.write("4-".getBytes());
outputStream.write(savedIP.getText().toString().getBytes());
outputStream.write(":".getBytes());
outputStream.write(savedPort.getText().toString().getBytes());
outputStream.write("/user=".getBytes());
outputStream.write(savedUserID.getText().toString().getBytes());
outputStream.write("&password=".getBytes());
outputStream.write(savedUserPass.getText().toString().getBytes());
outputStream.write(System.getProperty("line.separator").getBytes());
outputStream.close();
Toast.makeText(getBaseContext(), "Address Saved !", Toast.LENGTH_SHORT).show();
savedName.setText("");
savedIP.setText("");
savedPort.setText("");
savedUserID.setText("");
savedUserPass.setText("");
savedChannel.setText("");
else{
Toast.makeText(getBaseContext(),"Apps does not support " + channelNumString + " channels",Toast.LENGTH_LONG).show();
}
}catch (Exception e){
e.printStackTrace();
}
布局
<EditText
android:layout_width="350dp"
android:layout_height="wrap_content"
android:id="@+id/editChannel"
android:background="@android:drawable/edit_text"
android:maxLines="1"
android:layout_gravity="center_horizontal"
android:inputType="number"
android:digits="0123456789."/>
这是我在遇到的问题,我假设您使用的是
EditText
。因此,您需要使用addTextChangedListener()
试试下面的方法
YOUR_EDIT_TEXT.addTextChangedListener(new TextWatcher()
{
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start,int count, int after){}
public void onTextChanged(CharSequence s, int start,int before, int count)
{
if(s.length() > 9)
{
//Do your stuff .
// You may show the intimation to user like don't try with more than 9 digits
}
else
{
//Do your stuff
}
}
});
这可能会对你有所帮助。@Fay-Zan
基本上,您不希望用户为您的字段输入超过9位数字,
这可以通过编程或使用布局视图属性两种方式实现
在xml simple中,将此属性赋予EditText
android:maxLength="9"
或者通过检查字段的长度以编程方式执行。例如,假设字段的id为@id+/portNo
那么你要这样做吗
private EditText mportNo;
在您的onCreate()中
你用哪种语言?什么代码会崩溃?Q:如何防止它崩溃?
A:输入的数字不要超过10位。我的意思是说,认真地说,你怎么可能期望一个比你提供的信息更好的答案呢?我假设这是基于你过去的问题的Java。您需要执行一些输入验证,或者使用try
块。如果没有代码,谁知道呢。@John3136,我知道答案是显而易见的,但如果出现这样的错误,即使人们不应该输入超过个字符,也会让我有点恼火that@4castle,是的,我正在使用Java,我很抱歉没有在我的问题中说明它,虽然如此简单,但它是完美的!非常感谢您的回答,这非常好。但是我更喜欢按元素的答案,因为它更简单。我将使用此代码作为将来的参考
mportNo = (EditText) findViewById(R.id.portNo);
String portValue = mportNo.getText().toString();
if(portValue.length() > 9) {
// throw error
}