[英]how to get an array outside of an if statement and for loop
I'm working on an app and I'm stuck witch a problem... I can't get access to an array, outside the if statement... here's my code: 我正在开发应用程序,但遇到了问题……我无法在if语句之外访问数组……这是我的代码:
public class MainActivity extends Activity {
TextView textLat;
TextView textLong;
TextView textChange;
TextView testid;
float gpsSpeed = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textLat = (TextView)findViewById(R.id.textLat);
textLong = (TextView)findViewById(R.id.textLong);
textChange = (TextView)findViewById(R.id.textChange);
testid = (TextView)findViewById(R.id.testid);
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener ll = new mylocationlistener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
}
@SuppressWarnings("unchecked")
public static void main(String argv[]) {
try {
File fXmlFile = new File("/Users/mkyong/staff.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
//optional, but recommended
//read this - http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("station");
int rows = nList.getLength();
int cols = 9;
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
String[][]options = new String[cols][rows];
options[0][0] = eElement.getElementsByTagName("name").item(0).getTextContent();
options[1][0] = eElement.getElementsByTagName("code").item(0).getTextContent();
options[2][0] = eElement.getElementsByTagName("lat").item(0).getTextContent();
options[3][0] = eElement.getElementsByTagName("long").item(0).getTextContent();
options[4][0] = eElement.getElementsByTagName("longlat").item(0).getTextContent();
options[5][0] = eElement.getElementsByTagName("uziadvies").item(0).getTextContent();
options[6][0] = eElement.getElementsByTagName("bijzonderheden").item(0).getTextContent();
options[7][0] = eElement.getElementsByTagName("ref").item(0).getTextContent();
options[8][0] = eElement.getElementsByTagName("groterkleiner").item(0).getTextContent();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
class mylocationlistener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
if(location != null)
{
double pLong = location.getLongitude();
double pLat = location.getLatitude();
gpsSpeed = ((location.getSpeed()*3600)/1000);
textLat.setText(Double.toString(pLat));
textLong.setText("jo");
double compareLatCoords = 51.704704;
double compareLongCoords = 4.854369;
testid.setText(Float.toString(gpsSpeed));
if (pLat <= compareLatCoords)
{
textChange.setText("Je bent net de bedaulxstraat doorgereden");
}
if (pLong >= compareLongCoords)
{
textChange.setText("U bent door een andere straat gereden dan daarnet.");
}
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
It's about the array: options[i][j] and I can't get access outside the if statement... I've been working on this for two days now and I can't find a solution... 它是关于数组的:options [i] [j],在if语句之外无法访问...我已经进行了两天的工作,但找不到解决方案...
EDIT: Thanks for all the answers, but when I try to access the variables (for example: options[1][0]
) in public void onLocationChanged(Location location) {...}
. 编辑:感谢所有的答案,但是当我尝试在public void onLocationChanged(Location location) {...}
访问变量(例如: options[1][0]
)时。 I get the error: options cannot be resolved to a variable. 我收到错误消息:选项无法解析为变量。
Greets, Kenneth 肯尼思,问候
Declare array String[][]options
outside of for-loop
and define it when necessary. 在for-loop
之外声明数组String[][]options
,并在必要时进行定义。
String[][]options = null;
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
options = new String[cols][rows];
...
if you define any variable inside if statement , it will be local variable
-->"and the scope of a local variable are the enclosing brackets, you can access it only inside the if
Block" ,So define options
outside if
statement 如果您在if语句内定义任何变量,它将是local variable
->“,并且local variable
的范围是括起来的括号,您只能在if
块内部访问它”,因此在if
语句外部定义options
String[][]options = new String[cols][rows];
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.