添加不适用于Android

时间:2011-03-15 22:17:59

标签: android math

发生了一件非常奇怪的事情。我有一个应用程序来计算答案中的点数。它运作得非常好,但由于我的本地化(对我的点数计算系统没有任何影响),它们没有被正确添加;相反,它们像字符串一样添加。

2 + 4 + 5 = 245,在11之前......有什么想法吗?

示例:

            if(antworten.geo == 0)
            punktzahl += 10;
        else if(antworten.geo == 1)
            punktzahl += 8;
        else if(antworten.geo == 2)
            punktzahl += 4;

像这样我从旋转器中得到答案

    public class geo_listener implements OnItemSelectedListener{
    private boolean i = false;
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id){
        if(i == true){
            antworten.geo_str = parent.getSelectedItem().toString();
            antworten.geo = parent.getSelectedItemPosition();
            Toast chosen = Toast.makeText(parent.getContext(), parent.getSelectedItem().toString(), Toast.LENGTH_SHORT);
            chosen.show();}
        else{
            i = true;
            antworten.geo = parent.getSelectedItemPosition();
        }
    }
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }
}

像这样我定义了所有这些变量和strngs

    public class antworten{
    public static int rennen = 0; // 1 - Rennen 2 - Langsam
    public static String rennen_str;
    public static int next_item = 0;  //1 - Küchenmesser 2 - Pistole 3 - Stift 4 - Baseball-Schläger
    public static String next_item_str;
    public static int family = 0; // 1 - Ja  2 - Nein
    public static String family_str;
    public static int place = 0; // 1 - Straße 2 - Zuhause 3 - Arbeit 4 - Restaurant 5 - Öffentlicher Platz
    public static String place_str;
    public static int geo = 0; // 1 - Berg 2 - Meer 3 - Land
    public static String geo_str;
    public static int virus = 0; // 1 - Luft 2 - Speichel 3 - Blut 4 - Weiß nicht
    public static String virus_str;
    public static int walk = 0; //1 - Küchenmesser 2 - Pistole 3 - Stift 4 - Baseball-Schläger
    public static String walk_str;
    public static int super_m = 0; // 1 - Ja  2 - Nein
    public static String super_m_str;
    public static int apo = 0; // 1 - Ja 2 - Nein
    public static String apo_str;
    public static int death = 0; // 1 - Kopfschuss 2 - Abtrennen 3 - Gegengift 4 - Normale Todesarten
    public static String death_str;
    public static long punktzahl;
    public static String punk_str;
}

并且像这样我计算点数

    package com.zombies.survive;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class result_activity extends Activity {
    static Context mContext;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.result);
        String ant_ren = getApplicationContext().getString(R.string.ant1);
        String ant_itm = getApplicationContext().getString(R.string.ant2);
        String ant_fam = getApplicationContext().getString(R.string.ant3);
        String ant_plc = getApplicationContext().getString(R.string.ant4);
        String ant_geo = getApplicationContext().getString(R.string.ant5);
        String ant_vir = getApplicationContext().getString(R.string.ant6);
        String ant_wlk = getApplicationContext().getString(R.string.ant7);
        String ant_sup = getApplicationContext().getString(R.string.ant8);
        String ant_apo = getApplicationContext().getString(R.string.ant9);
        String ant_tot = getApplicationContext().getString(R.string.ant10);
        //Rennen Frage
            if(antworten.rennen == 0)
                antworten.punktzahl += 5;
            else
                antworten.punktzahl += 10;
        //Item Frage
            if(antworten.next_item == 0)
                antworten.punktzahl += 6;
            else if(antworten.next_item == 1)
                antworten.punktzahl += 10;
            else if(antworten.next_item == 2)
                antworten.punktzahl += 2;
            else if(antworten.next_item == 3)
                antworten.punktzahl += 5;
        //Familie Frage
            if(antworten.family == 0)
                antworten.punktzahl += 3;
            else
                antworten.punktzahl += 10;
        //Place Frage
            if(antworten.place == 0)
                antworten.punktzahl += 6;
            else if(antworten.place == 1)
                antworten.punktzahl += 2;
            else if(antworten.place == 2)
                antworten.punktzahl += 8;
            else if(antworten.place == 3)
                antworten.punktzahl += 10;
            else if(antworten.place == 4)
                antworten.punktzahl += 5;
            else if(antworten.place == 5)
                antworten.punktzahl += 6;
            else if(antworten.place == 6)
                antworten.punktzahl += 5;
        //Geo Frage
            if(antworten.geo == 0)
                antworten.punktzahl += 10;
            else if(antworten.geo == 1)
                antworten.punktzahl += 8;
            else if(antworten.geo == 2)
                antworten.punktzahl += 4;
        //Virus Frage
            if(antworten.virus == 0)
                antworten.punktzahl += 2;
            else if(antworten.virus == 1)
                antworten.punktzahl += 4;
            else if(antworten.virus == 2)
                antworten.punktzahl += 10;
            else if(antworten.virus == 3)
                antworten.punktzahl += 1;
        //Walk Frage
            if(antworten.walk == 0)
                antworten.punktzahl += 6;
            else if(antworten.walk == 1)
                antworten.punktzahl += 8;
            else if(antworten.walk == 2)
                antworten.punktzahl += 10;
            else if(antworten.walk == 3)
                antworten.punktzahl += 3;
            else if(antworten.walk == 4)
                antworten.punktzahl += 1;
        //Supermarkt Frage
            if(antworten.super_m == 0)
                antworten.punktzahl += 10;
            else if(antworten.super_m == 1)
                antworten.punktzahl += 5;
       //Apotheken Frage
            if(antworten.apo == 0)
                antworten.punktzahl += 10;
            else if(antworten.apo == 1)
                antworten.punktzahl += 5;
       //Töten Frage
            if(antworten.death == 0)
                antworten.punktzahl += 7;
            else  if(antworten.death == 1)
                antworten.punktzahl += 4;
            else  if(antworten.death == 2)
                antworten.punktzahl += 5;
            else  if(antworten.death == 3)
                antworten.punktzahl += 10; 
        antworten.punk_str = String.valueOf(antworten.punktzahl);
        TextView ergebniss = (TextView)findViewById(R.id.res_txt);
        ergebniss.setMovementMethod(new ScrollingMovementMethod());
        ergebniss.setText(R.string.wenn_eine_zombie_apokalypse_eintreten_w_rde_steht_die_chance_f_r_dich_zu_berleben_bei_ + antworten.punk_str + "%\n\n\n"+ant_ren+ant_itm+ant_plc+ant_fam+ant_geo+ant_vir+ant_wlk+ant_sup+ant_apo+ant_tot);

        Button back_but = (Button)findViewById(R.id.back_but);
        back_but.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent i = new Intent(result_activity.this,home.class);
                startActivity(i);

            }
        });
    }
}

4 个答案:

答案 0 :(得分:1)

如果你将字符串“2”,“4”和“5”加在一起,你将得到“245”,而如果你添加整数,你将得到11.你的变量“punktzahl”必须是拿着一根绳子。

答案 1 :(得分:1)

你确定你加入的punktzahl变量是来自antworten类的吗?你在写antworten.geo,但不是antworten.punktzahl。

如果您尝试在IDE中查找变量,您到达哪里?

答案 2 :(得分:0)

您可以尝试使用.intValue()

int tempInt1 = 5;
int tempInt2 = 4;
int tempInt3 = tempInt2.intValue() + tempInt1.intValue();

.add()

int tempInt1 = 5;
int tempInt2 = 4;
int tempInt3 = tempInt2.add(tempInt1);

我手边没有编译器,所以我不知道这些是否有效,但是他们可以尝试。

另外,请记住,如果某个地方你偶然会在一个int中添加一个字符串,结果值将是一个字符串!这可能是你没有字符串的原因期待他们。

答案 3 :(得分:0)

我认为@thoredge走在正确的轨道上。尝试替换此行:

antworten.punk_str = String.valueOf(antworten.punktzahl);

有了这个:

antworten.punk_str = antworten.punktzahl.getClass().getName();

如果punktzahl确实是long,则应该会出现语法错误。否则,您将看到Java和Android认为它真正的类。

我可以想到两种方式,它可能最终成为其他类型。正如@thoredge所建议的那样,第一个是你实际上没有上课antworten。是否有可能在项目的不同包中有两个具有相同名称的不同类?

可能是com.zombies.survive.antwortencom.zombies.antworten

您是否可能正在查看antworten的旧副本?也许它没有被重新编译,而早期的版本实际上使用了String。尝试进行make-clean / build-all(Project&gt; Eclipse中的Clean)。尝试重新启动IDE。尝试删除源代码,甚至是项目,并从头开始从源代码管理中检查它。

我能想到的最后一件事是它可能是一个Classpath问题。您是否有可能在项目中有一个名为“antworten”的jar文件而不是您期望的类?我已经看到过去发生了一些非常奇怪的事情,例如,当在WebSphere上安装了两个应用程序时,他们使用了同一个库的不同版本。类路径上有两个不同版本的同一个类。结果是完全神秘。我有一个非常不愉快的下午帮助同事弄明白。所以要确保没有发生在你身上。