发生了一件非常奇怪的事情。我有一个应用程序来计算答案中的点数。它运作得非常好,但由于我的本地化(对我的点数计算系统没有任何影响),它们没有被正确添加;相反,它们像字符串一样添加。
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);
}
});
}
}
答案 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.antworten
和com.zombies.antworten
?
您是否可能正在查看antworten
的旧副本?也许它没有被重新编译,而早期的版本实际上使用了String
。尝试进行make-clean / build-all(Project&gt; Eclipse中的Clean)。尝试重新启动IDE。尝试删除源代码,甚至是项目,并从头开始从源代码管理中检查它。
我能想到的最后一件事是它可能是一个Classpath问题。您是否有可能在项目中有一个名为“antworten”的jar文件而不是您期望的类?我已经看到过去发生了一些非常奇怪的事情,例如,当在WebSphere上安装了两个应用程序时,他们使用了同一个库的不同版本。类路径上有两个不同版本的同一个类。结果是完全神秘。我有一个非常不愉快的下午帮助同事弄明白。所以要确保没有发生在你身上。