我正在使用特定的Java代码分配块,目前在一页上,我使用了30多次。这是因为在我进行的每个比较中,每个代码块中所有数字都需要加1。 (示例1)有没有一种方法可以编写一些使使用中的数字增加1的代码(就像您通常使用增量代码一样)。如果是这样,则在调用资源时也可以这样做(示例2)
特定的代码块:
// Comparison 1
if (Uinput1.equals(answer1)) {
edit1.setBackgroundColor(Color.parseColor("#00FF00"));
}
else {
edit1.setBackgroundColor(Color.parseColor("#FF0000"));
}
第二次使用,等等。
// Comparison 2
if (Uinput2.equals(answer2)) {
edit2.setBackgroundColor(Color.parseColor("#00FF00"));
}
else {
edit2.setBackgroundColor(Color.parseColor("#FF0000"));
}
声明资源等
private String answer1;
private String answer2;`
this.answer1 = getString(R.string.answer1);
this.answer2 = getString(R.string.answer2);`
this.answer1 = getString(R.string.answer1);
this.answer2 = getString(R.string.answer2);
this.edit1 = findViewById(R.id.edit1);
this.edit2 = findViewById(R.id.edit2);
String Uinput1 = edit1.getText().toString();
String Uinput2 = edit2.getText().toString();
编辑:
我在第一部分中使用了
private String[] answers = {"example", "example"}
答案 0 :(得分:3)
经常在变量名称中看到数字(即float var1),现在是使用数组的好时机。
在这种情况下,您可以使用如下数组:
private String[] answers = new String[2];
或
private String[] answers = {"foo", "bar"}
然后您可以像这样访问数组的每个索引:
System.out.println(answers[0]); //prints "foo"
或者,您可以使用for循环对数组的每个索引执行操作。
for(int i = 0; i < answers.length; i++){
System.out.println(answers[i]);
}
答案 1 :(得分:2)
您可以执行以下操作:
function(a,b,c){
if (a.equals(b)) {
c.setBackgroundColor(Color.parseColor("#00FF00"));
}
else {
c.setBackgroundColor(Color.parseColor("#FF0000")); }
}
答案 2 :(得分:1)
有很多方法可以避免重复代码行
1.Arrays :您可以在安静的情况下轻松使用数组
int inputs=2;
String[] Uinput=new String[inputs]
String[] Answers=new String[inputs]
EditText[] Edit=new EditText[inputs]
您可以使用for循环对其进行初始化
for(int i=0;i<inputs;i++){
int resID = getResources().getIdentifier("answer"+(i+1), "id",getPackageName());
Edit[i]=((EditText) findViewById(resID));
Uinputs[i]=Edit[i].getText().toString();
resID=getResources().getIdentifier("edit"+(i+1), "string",getPackageName());
Answer[i]=getResource(resID)
}
您只需操纵i的值即可轻松进行比较
if (Uinput[i].equals(Answer[i])) {
Edit[i].setBackgroundColor(Color.parseColor("#00FF00"));
}
else {
Edit[i].setBackgroundColor(Color.parseColor("#FF0000"));
}
2.Functions :您可以将函数用于比较部分,但声明起来会很困难
void Compare(String Uinput,String answer,EditText edit){
if (Uinput.equals(answer)) {
edit.setBackgroundColor(Color.parseColor("#00FF00"));
}
else {
edit.setBackgroundColor(Color.parseColor("#FF0000"));
}
}
我本人使用函数来减少重复,但是在这种情况下,使用数组会很合理。您可以通过使用数组将两者结合起来,并且仅在调用函数时使用数组的值作为参数
Compare(Uinput[i],Answer[i],Edit[i])
答案 3 :(得分:0)
在这种情况下,即使仅因为HashMaps是为了进行这种比较而设计,我还是会远离数组。如果将问题/答案对保存在哈希图中,则可以创建一个方法来接受问题和答案字符串,并返回一个布尔值,指示是否存在匹配项。这将降低您所看到的复杂性,并避免需要所有这些额外的字符串声明。