首页 文章

引起:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-2在java.lang.String.substring(String.java:2036)at

提问于
浏览
-3

错误是在总活动java类中创建的

这是logcat

java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.prudentmubasha.ainnaresto / com.example.prudentmubasha.ainnaresto.TotalActivity}:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-2在android.app .ActivityThread.performLaunchActivity(ActivityThread.java:2892)位于android.app.ser.Tra.TerreadA活动中的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3027)处于android.app.servertransaction的Android.app.servertransaction.LaunchActivityItem.exe(LaunchActivityItem.java:78) . 在Android.app.Handler的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1786)的android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:73)上的TransactionExecutor.executeCallbacks(TransactionExecutor.java:101) .dispatchMessage(Handler.java:106)位于android.app.Looper.loop(Looper.java:164)的android.app.ActivityThread.main(ActivityThread.java:6656),位于java.lang.reflect.Method.invoke(本地方法)在com.android.internal.os.RuntimeInit $ MethodAndArg com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)中的sCaller.run(RuntimeInit.java:438)引起:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-2 . 在java.lang .string.substring(String.java:2036)位于android.app的android.app.Activity.performCreate(Activity.java:7117)的com.example.prudentmubasha.ainnaresto.TotalActivity.onCreate(TotalActivity.java:33) . android.app.A活动中的Activity.performCreate(Activity.java:7108)在Android.app.ActivityThread.handleLaunchActivity(ActivityThread)上的android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1262)处于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2867) .java:3027)在Android.app.servertransaction.TransactionExecutor.execute的android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:101)上的android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) TransactionExecutor.java:73)在android.app.ActivityThread $ H.handleMessage(ActivityT) hread.java:1786)android.app.Handler.dispatchMessage(Handler.java:106)android.app.Looper.loop(Looper.java:164)android.app.ActivityThread.main(ActivityThread.java:6656) )com.android.internal.os.ZygoteInit.main中的com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:438)中的java.lang.reflect.Method.invoke(Native Method)(ZygoteInit)的.java:823)

这是发生的地方错误

enter c while (st.hasMoreElements()) {
    //Toast.makeText(getApplicationContext(), st.nextElement().toString().substring(0,1), Toast.LENGTH_LONG).show();
    test = st.nextElement().toString().substring(3,1);
    if(count>0)
        total+= Float.parseFloat(test);
    count++;
}

这是java活动的总类活动

mApp=((pizza) getApplicationContext());
et_summary = (EditText) findViewById(R.id.et_summary);
tv_total = (TextView) findViewById(R.id.tv_total);
//Toast.makeText(getApplicationContext(), "You have chosen the" + " " +  mApp.getGlobalVarValue(), Toast.LENGTH_LONG).show();
et_summary.setText(mApp.getGlobalVarValue());
String str = mApp.getGlobalVarValue();
StringTokenizer st = new StringTokenizer(str,"$");
String test="";
float total=0;
int count=0;
while (st.hasMoreElements()) {
    //Toast.makeText(getApplicationContext(), st.nextElement().toString().substring(0,1), Toast.LENGTH_LONG).show();
    test = st.nextElement().toString().substring(3,1);
    if(count>0)
        total+= Float.parseFloat(test);
    count++;
}
et_summary.setText(mApp.getGlobalVarValue());
tv_total.setText("Total :" + total+"");
mApp.setGlobalClear();


}
public boolean isFloat( String input )
{
try
{
    Float.parseFloat( input );
    return true;
}
catch( Exception e)
{
    return false;
}
}
}

1 回答

  • 2

    你不能从3到1交换子串

    substring(3,1);
    

    对于

    substring(1,3)
    

相关问题