【发布时间】:2017-06-13 14:05:16
【问题描述】:
我尝试解决这个问题,但我不知道我做错了什么,已经过了 7 天尝试了很多事情,我需要帮助解决它,我认为错误出在我创建的类上。
我有 4 个玩家,有 4 个文本视图和 4 个其他文本视图用于玩家的得分。此外,我还为 place1、place2、place3、place4 制作了另外 4 个新的文本视图。我想要做的是,我需要对分数进行排序并将它们显示在 place1、place2、place3、place4 以及拥有该分数的玩家的姓名。
到目前为止,我所做的是将我的类创建到 onCreate 部分上方的主要活动中
public class MainActivity extends AppCompatActivity {
//my created class
class JucatorScor {
public String Name;
public int Scor;
public JucatorScor (String sName, int iScor) {
this.Name = sName;
this.Scor = iScor;
}
}
//begin oncreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//end oncreate
}
我还有一个按钮,当我点击它时,从文本视图中读取我的值,查看球员姓名、球员得分,然后对数组进行排序后显示 place1、place2、place3、place4,如下所示:
//begin button click
public void sorteazaCLICK (View view) {
//initialization place1, place2, place3, place4 where i will put the sorting value
TextView varPozitia1 = (TextView) findViewById(R.id.text_loc1);
TextView varPozitia2 = (TextView) findViewById(R.id.text_loc2);
TextView varPozitia3 = (TextView) findViewById(R.id.text_loc3);
TextView varPozitia4 = (TextView) findViewById(R.id.text_loc4);
//initialization name of players
TextView varNumeJucator1 = (TextView) findViewById(R.id.text_numeJuc1);
String sNameJuc1;
sNameJuc1 = varNumeJucator1.getText().toString();
TextView varNumeJucator2 = (TextView) findViewById(R.id.text_numeJuc2);
String sNameJuc2;
sNameJuc2 = varNumeJucator1.getText().toString();
TextView varNumeJucator3 = (TextView) findViewById(R.id.text_numeJuc3);
String sNameJuc3;
sNameJuc3 = varNumeJucator1.getText().toString();
TextView varNumeJucator4 = (TextView) findViewById(R.id.text_numeJuc4);
String sNameJuc4;
sNameJuc4 = varNumeJucator1.getText().toString();
//initialization scores
TextView varScorJucator1 = (TextView) findViewById(R.id.text_scorJuc1);
String t1;
t1 = varScorJucator1.getText().toString();
TextView varScorJucator2 = (TextView) findViewById(R.id.text_scorJuc2);
String t2;
t2 = varScorJucator2.getText().toString();
TextView varScorJucator3 = (TextView) findViewById(R.id.text_scorJuc3);
String t3;
t3 = varScorJucator1.getText().toString();
TextView varScorJucator4 = (TextView) findViewById(R.id.text_scorJuc4);
String t4;
t4 = varScorJucator1.getText().toString();
//transform the values from text view scores into integer
int iScorJuc1;
iScorJuc1 = Integer.parseInt(t1);
int iScorJuc2;
iScorJuc2 = Integer.parseInt(t2);
int iScorJuc3;
iScorJuc3 = Integer.parseInt(t3);
int iScorJuc4;
iScorJuc4 = Integer.parseInt(t4);
ArrayList<JucatorScor> arrJucatorScor = new ArrayList<>(4);
//building manually the array list
arrJucatorScor.add(new JucatorScor(sNameJuc1, iScorJuc1)); //position 0
arrJucatorScor.add(new JucatorScor(sNameJuc2, iScorJuc2)); //position 1
arrJucatorScor.add(new JucatorScor(sNameJuc3, iScorJuc3)); //position 2
arrJucatorScor.add(new JucatorScor(sNameJuc4, iScorJuc4)); //position 3
Collections.sort(arrJucatorScor, new Comparator<JucatorScor>() {
//sorting my object array depending on scores
@Override
public int compare(JucatorScor o1, JucatorScor o2) {
return Integer.valueOf(o1.Scor).compareTo(o2.Scor);
}
});
//here display them from bigger to smaller according to eatch place1, place2, place3, place4
varPozitia1.setText(String.valueOf(arrJucatorScor.get(3)));
varPozitia2.setText(String.valueOf(arrJucatorScor.get(2)));
varPozitia3.setText(String.valueOf(arrJucatorScor.get(1)));
varPozitia4.setText(String.valueOf(arrJucatorScor.get(0)));
} //end button click
问题是,当我点击按钮时,不要把 place1、place2、place3、place4 的名称和分数排序...只是出现在这张照片中的一些东西:
【问题讨论】:
标签: java android arrays sorting