这里我从用户那里拿出了粗鲁和粗犷然后我把它转换成整数,这就是log cat msg的问题:
无法将30.01转换为int!然后我在数据库中输入lat和lon到我的表中:
public class newMission extends Activity
implements OnClickListener{
SQLiteDatabase sql;
EditText e1,e2,e3,e4;
Button b;
MaptoDo obj;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Intent in =getIntent();
setContentView(R.layout.newmission);
e1=(EditText) findViewById(R.id.edn1);
e2=(EditText) findViewById(R.id.edn2);
e3=(EditText) findViewById(R.id.edn3);
e4=(EditText) findViewById(R.id.edn4);
b=(Button) findViewById(R.id.btnew);
b.setOnClickListener(this);
obj=new MaptoDo();
sql=openOrCreateDatabase("db",0, null);
sql.execSQL("CREATE TABLE Mission" +
"" +
" (emp integer REFERENCES Employee2 (password)," +
"oper_n text,cust_n text,lat double," +
"long double,oper_id integer PRIMARY KEY AUTOINCREMENT)");
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String opN=e1.getText().toString();
String cuN=e2.getText().toString();
String lats=e3.getText().toString();
String lons=e4.getText().toString();
try {
int lat=Integer.parseInt(lats);
int lon=Integer.parseInt(lons);
sql.execSQL("insert into Mission (oper_n,cust_n,lat,long)values('"+opN+"','"+cuN+"',"+lat+","+lon+");");
Toast.makeText(this,"Data Inserted",2000).show();
obj.addMission(lat, lon);
//add to ToDo list too
}catch (NumberFormatException nfe) {
Toast.makeText(this, "Please Enter Valid Data",2000).show();
}}
}
答案 0 :(得分:6)
首先尝试使用double
数据类型。
double dLat=Double.parseDouble(lats);
double dLon=Double.parseDouble(lons);
然后得到小数点前的值:
int lat = (int)Math.floor(dLat);
int lon = (int)Math.floor(dLon);
或者如果你想 - 你可以先在输入上运行一个正则表达式,以确保它有数字[dot]数字,否则提取数字的输入将失败,但话虽如此,这将取决于如何EditText
的布局为XML布局中的某些输入类型设置了android:inputType
。
答案 1 :(得分:-1)
您无法将字符串“30.01”转换为int
而不会失去精确度。尝试将其解析为float
。
float lat = Float.parseFloat(lats);
或使用
double lat = Double.parseDouble(lats);