gpt4 book ai didi

java - NullPointerException 在 Android 中使用 Scanner 从文件读取?

转载 作者:行者123 更新时间:2023-12-02 05:35:45 24 4
gpt4 key购买 nike

我有一个大地水准面值文件,我正在尝试读取它。我尝试注释一些代码,然后测试发现 NullPointerException 发生在 readFile() 方法中,我不知道为什么。

大地水准面.java:

import java.util.Scanner;
import java.io.*;

import android.app.Activity;
import android.content.Context;

public class Geoid extends Activity{

Scanner openGeoid;

String[] geoidStr = new String[1040000];
double[] geoid = new double[1040000];

double lat;
double longi;
int geoidIndex;

public void getLatLong(double latIn, double longIn){
lat = (-(Math.round(latIn * 4) / 4 + 90) + 180) * 4;
if(longIn >= 0){
longi = (Math.round(longIn * 4) / 4) * 4;
}
if(longIn < 0){
longi = (Math.round(longIn * 4) / 4 + 360) * 4;
}
}

public void openFile(){
try{
openGeoid = new Scanner(getResources().openRawResource(R.raw.geoid));
}catch(Exception e){
;
}
}

public double readFile(){

for(int c = 0;openGeoid.hasNext();c++){
geoidStr[c] = openGeoid.next();
geoid[c] = Double.parseDouble(geoidStr[c]);
}

geoidIndex = (int)Math.round(lat * 1441 + longi);
return geoid[geoidIndex];

}

public void closeFile(){
openGeoid.close();
}
}

MainActivity.java 的 getOffSet 方法:

 public double getOffSet(double lat, double longi){

Geoid geo = new Geoid();
geo.getLatLong(lat, longi);
geo.openFile();
double offset = geo.readFile();
geo.closeFile();
return offset;

}

最佳答案

Geoid geo = new Geoid();

您永远不应该使用 new 运算符来实例化 Activity,因为 Activity 遵循其自己的生命周期,并且 getResources 在之后可用Activity 的 onStart 被调用,如果您实际上通过 Intent 启动了 Activity,则 onStart 也会被调用。如果您只是为了 getResources 而需要 Activity,请在方法的签名中添加一个附加参数。例如,Context 对象

关于java - NullPointerException 在 Android 中使用 Scanner 从文件读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24990778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com