-2

在这里,我从用户那里获取经度和经度,然后将其转换为整数,这是日志 cat msg 的问题:

无法将 30.01 转换为 int !然后我在数据库中的表中输入纬度和经度:

  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();
}}

}

4

2 回答 2

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] 数字,否则将输入提取到 numeric 将失败,但话虽如此,这将取决于布局的方式它EditText是否为某些输入类型设置了 -android:inputType在 XML 布局中。

于 2012-08-12T19:03:25.097 回答
0

int您不能在不丢失精度的情况下将字符串“30.01”转换为。尝试将其解析为float.

float lat = Float.parseFloat(lats);

或使用

double lat = Double.parseDouble(lats);
于 2012-08-12T19:03:47.163 回答