Вызвано: java.lang.StringIndexOutOfBoundsException: индекс строки вне диапазона: -2 в java.lang.String.substring (String.java:2036) в - PullRequest
0 голосов
/ 28 апреля 2018

ошибка была создана в классе общей активности Java

вот логкат

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.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.prudentmubasha.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;
}
}
}

1 Ответ

0 голосов
/ 28 апреля 2018

Нельзя подстроку от 3 до 1 Своп

substring(3,1);

для

substring(1,3)
...