-2

ここで私はユーザーからlatudeとlongtudeを取得し、それを整数に変換しました。これがlogcatmsgの問題です。

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

}

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

または、必要に応じて、最初に入力に対して正規表現を実行して、数字[ドット]桁があることを確認できます。そうしないと、入力の数値への抽出が失敗しますが、そうは言っても、それはレイアウトの方法に依存しますXMLレイアウト内で、EditText特定の入力タイプ用に設定されています。android:inputType

于 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 に答える