2014-11-20 41 views
-1

我有代码的这一部分:的Android的Java:不能解析符号已经宣布

final String[] qst = getResources().getStringArray(R.array.q1); 
    qt.setText(qst[0]); 
    respA.setText(qst[1]); 
    respB.setText(qst[2]); 
    respC.setText(qst[3]); 
    respD.setText(qst[4]); 

,它运行没有问题。我想在strings.xml中获得一个数组,并带有多个选择的问题。问题是我想要一个随机的问题,在屏幕上呈现。 我认为最好的解决方案是随机化一个int并选择一个问题作为整个函数(因为我是一个noob哈哈)。但是当我尝试代码

final int iqst = 1; 
    if (iqst == 1) { 
     final String[] qst = getResources().getStringArray(R.array.q1); 
    } 
    qt.setText(qst[0]); 
    respA.setText(qst[1]); 
    respB.setText(qst[2]); 
    respC.setText(qst[3]); 
    respD.setText(qst[4]); 

机器人工作室给出一个错误: 错误:(113,20)错误:无法找到符号变量QST。

我已经搜索互联网上,但我不弄清楚为什么我不能在声明数组如果

+3

因为'qst'的范围在if块体中,所以在外面看不见。 (你也应该有警告) – 2014-11-20 19:55:34

+0

它不在你声明的范围之外。 – 2014-11-20 19:56:42

+0

谢谢!这是有道理的...我会寻找解决问题的办法。 我的一个大问题是,没有掌握英语,很难知道要查找什么。 他记得的第一件事 – 2014-11-20 20:03:23

回答

0

可变QST是在如果块的范围。只有在你声明它的方式时才能访问它。我会这样做的一种方式是在外部声明它,比如

final int iqst = 1; 
String[] qst = null; 
if (iqst == 1) { 
    qst = getResources().getStringArray(R.array.q1); 
} 
qt.setText(qst[0]); 
respA.setText(qst[1]); 
respB.setText(qst[2]); 
respC.setText(qst[3]); 
respD.setText(qst[4]); 
+0

非常感谢!愿上帝保佑你! – 2014-11-20 20:19:33

+0

你能把这个标记为接受的回应吗? – committedandroider 2014-11-20 21:09:34

0

您声明,如果里面QST。它是无效的外如果块