原因:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-2位于

原因:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-2位于,java,android,sqlite,android-sqlite,Java,Android,Sqlite,Android Sqlite,在total activity java类中创建了错误 这是航海日志 java.lang.RuntimeException:无法启动活动组件信息{com.example.prudentmubasha.ainnaresto/com.example.prudentmubasha.ainnaresto.TotalActivity}:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-2 在android.app.ActivityThread.per

在total activity java类中创建了错误

这是航海日志

java.lang.RuntimeException:无法启动活动组件信息{com.example.prudentmubasha.ainnaresto/com.example.prudentmubasha.ainnaresto.TotalActivity}:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-2 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2892)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3027) 在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:101)中 在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:73)中 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1786) 位于android.os.Handler.dispatchMessage(Handler.java:106) 位于android.os.Looper.loop(Looper.java:164) 位于android.app.ActivityThread.main(ActivityThread.java:6656) 位于java.lang.reflect.Method.invoke(本机方法) 位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823) 原因:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-2 位于java.lang.String.substring(String.java:2036) 位于com.example.mubasha.ainnaresto.TotalActivity.onCreate(TotalActivity.java:33) 位于android.app.Activity.performCreate(Activity.java:7117) 位于android.app.Activity.performCreate(Activity.java:7108) 位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1262) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2867) 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3027) 在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:101)中 在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:73)中 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1786) 位于android.os.Handler.dispatchMessage(Handler.java:106) 位于android.os.Looper.loop(Looper.java:164) 位于android.app.ActivityThread.main(ActivityThread.java:6656) 位于java.lang.reflect.Method.invoke(本机方法) 位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 位于com.android.internal.os.ZygoteInit.main(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;
}
}
}

不能从3子串到1 交换

为了


它不起作用,现在显示出不同的错误。原因:java.lang.StringIndexOutOfBoundsException:长度=2;索引=3它不起作用。现在显示不同的错误。原因:java.lang.StringIndexOutOfBoundsException:长度=2;index=3等等,你知道索引从0开始,对吗?请尝试
子字符串(0,2)
,如果您能按我答案左侧的小勾号接受它,我们将不胜感激:)
substring(3,1);
substring(1,3)