android studio:设置全局字符串数组时遇到问题

时间:2016-04-06 03:54:31

标签: java android arrays android-studio

您好我正在使用全局数组工作android工作室项目, 我可以很好地从全局数组中读取,并且写入没有问题 全局整数,但我无法弄清楚如何设置全局 代码中的数组,这是项目的重要部分:

在android manifest xml:

中的application标签下添加了这个
android:name=".Globals"

java class Globals:

import android.app.Application;

public class Globals extends Application {

public int empnum=13;
public int getData3() {
return empnum;
}
public void setData3(int empnum) {
this.empnum = empnum;
}

public String[] passw = {"0123","0123","0123","0123","0123","0123","0123","0123","0123","0123","0123","0123","0123"};
public String[] getData4() {
return passw;
}
public void setData4(String[] passw) {
this.passw = passw;
}

public int login=0;
public int getData5() {
return login;
}
public void setData5(int login) {
this.login = login;
}

public String[] empname = {"Name1","Name2","Name3","Name4","Name5","Name6","Name7","Name8","Name9","Name10","Name11","Name12","Name13","Not logged in"};
public String[] getData6() {
return empname;
}
public void setData6(String[] empname) {
    this.empname = empname;
}

以下是我遇到问题的代码块

java类的内部类TimeIn:

final Globals g = (Globals) getApplication();
final String[] empname = g.getData6();
final String[] passw = g.getData4();


public void onClick(View v) {

i = 0;
String empname = edit2.getText().toString();
int getemn = Integer.parseInt(edit.getText().toString());

    if (i == 0 && h == 0) {
        g.setData3(getemn);

        g.setData6(String[getemn], empname); // This one line right here won't compile, I have tried different combinations but have had 0 luck
    i = 1;
    h = 1;
        }
    }    

获取和使用String数组没有问题,这就是它的工作原理 数组值并将其与字符串进行比较:

public void onClick(View v) {

i = 0;
String getemp = edit2.getText().toString();
int getemn = Integer.parseInt(edit.getText().toString());


if (i == 0 && getemp.equals(passw[getemn])) { // All of this works perfectly
    g.setData3(getemn);
    g.setData5(0);
    tfone.setText("Empoyee " + getemn);
    tftwo.setText("Logged in");
    i = 1;
}
if (i == 0 && getemp != (passw[getemn])) {
    tfone.setText("No matches found");
    edit2.setText("Not logged in");
    i = 1;
}

}

所以我知道这行代码是错误的:

g.setData6(String[getemn], empname); 

但是 我的生活我无法弄清楚它应该如何写,唯一的错误提示是我 从悬停在线上 -

预期的数组类型;找到'java.lang.String'

任何人都知道我做错了什么?

2 个答案:

答案 0 :(得分:1)

Global类中,使用一个参数

声明方法
public void setData6(String[] empname) {
    this.empname = empname;
}

但是当你打电话时,你会输入2个参数g.setData6(String[getemn], empname);
你应该删除一个参数
或者在Globals class

中添加另外一个包含2个参数的方法

同时 你在这里错了

   ...
    String empname = edit2.getText().toString();
    int getemn = Integer.parseInt(edit.getText().toString());
    ...
    g.setData6(String[getemn], empname); // This one line right here won't compile, I have tried different combinations but have had 0 luck

setData6函数现在需要2个参数,一个是String array,另一个是String 但是你将String array放到函数中的方式是错误的 这是一个简单的示例,展示了如何将String array传递给函数

public class Test {
    public static void setData6(String[] empnameList, String empname) { // with the `String array` you should declare the variable name like `empnameList` or `arrEmpname` NOT `empname` because `empname` make confusing when you read code
        this.empnameList = empnameList;
        this.empname = empname;
    }

    public static void main(String[] args) {
        String[] strArray = new String[]{"Name1","Name2","Name2"};
        String empName = "Na";

        setData6(strArray,empName); // call method with 2 parameters here
    }
}

希望这个帮助

答案 1 :(得分:0)

解决!!事实证明我必须修改我的Globals类的setter部分,所以Globals类中的第一部分(getter方法)是正确的:

function finalResults() {
    var theAnswer = Object.keys(answerData).
                reduce(function(a, b){ 
                   return answerData[a].score > answerData[b].score ? a : b }
                );

    document.getElementById("finalResulthere").innerHTML = "<p>Congratulations you are a " + theAnswer +".</p>";
}

我必须将我的Globals类的getter部分更改为:

score

要从任何类设置所需索引的值,只需使用:

public String[] compname = {"Manager's company", "Company2", "Company3", "Company4", "Company5", "Company6", "Company7", "Company8", "Company9", "Company10", "Company11", "Company12", "Company13", "Not punched in"};
public String[] getData7() {
return compname;
}

其中getemn是一个整数,getemp是一个字符串。