Pregunta

I get the error divide by zero in the method applyTransformation at androids animation class:

05-15 21:13:59.330: E/AndroidRuntime(16997): java.lang.ArithmeticException: divide by zero
05-15 21:13:59.330: E/AndroidRuntime(16997):    at com.special.ResideMenuDemo.FontResize.applyTransformation(FontResize.java:34)

thats my applyTransformation method:

@Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        super.applyTransformation(interpolatedTime, t);

        SpannableStringBuilder spanTxt = new SpannableStringBuilder("He");

        int length = spanTxt.length();

        for (int i = 0; i < length; i++) {

            /*Log.e("Log", "length : " + length + "\r\n" + 
                    "i : " + i + "\r\n" + 
                    "interpolatedTime : " + interpolatedTime);*/

            float size = 1 / (1 / length * (i+1)) * interpolatedTime;

            if(size >= 1)
                continue;

            spanTxt.setSpan(new RelativeSizeSpan( size ), i, i+1, 0 );

        }

        text.setText(spanTxt);

    }

the size of the first letter should be 0, if the interpolatedTime is 0

float size = 1 / (1 / length * (i+1)) * interpolatedTime;
float size = 1 / (1 / 2 * (0 + 1)) * 0,0;

but I get the error divide by zero

¿Fue útil?

Solución

You are performing integer division with 1 / 2, which in Java results in another integer, 0, causing your divide by zero error.

Specify that 1 as a float literal, 1.0f, to force floating-point arithmetic from the start.

float size = 1 / (1.0f / length * (i+1)) * interpolatedTime;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top