Java 获取要调用的方法时遇到的问题
我似乎无法获得上面的坐标和百分比来输出任何内容。我有一个方法列表坐标,上面有一个高度,把纬度和经度放在列表中。然后我需要计算出新列表中所有坐标相对于旧列表的百分比。我在下面有这个。每当我运行这个程序时,我似乎无法获得输入的百分比Java 获取要调用的方法时遇到的问题,java,arrays,Java,Arrays,我似乎无法获得上面的坐标和百分比来输出任何内容。我有一个方法列表坐标,上面有一个高度,把纬度和经度放在列表中。然后我需要计算出新列表中所有坐标相对于旧列表的百分比。我在下面有这个。每当我运行这个程序时,我似乎无法获得输入的百分比 import java.io.File; import java.io.FileNotFoundException; import java.util.*; import java.util.List; public class Map { static doubl
import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;
import java.util.List;
public class Map {
static double[][] array;
double longitude, latitude;
double alti;
public static void main(String[] args) throws FileNotFoundException {
Map m = new Map();
m.readDataArray("earth.xyz");
System.out.println(Arrays.deepToString(array));
m.coordinatesAbove(-2000);
m.percentageAbove(-2000);
System.out.println(percentage);
}
public void readDataArray(String filename) throws FileNotFoundException {
Scanner input = new Scanner(new File(filename));
int countLines = 0;
while (input.hasNextLine()) {
countLines++;
input.nextLine();
}
array = new double[2336041][3];
input.close();
input = new Scanner(new File(filename));
String curLine;
double longitude, latitude;
double alti;
countLines = 0;
while (input.hasNextLine()) {
curLine = input.nextLine();
String[] curData = curLine.split("\t");
longitude = Double.parseDouble(curData[0]);
latitude = Double.parseDouble(curData[1]);
alti = Double.parseDouble(curData[2]);
array[countLines][0] = longitude;
array[countLines][1] = latitude;
array[countLines][2] = alti;
countLines++;
}
}
public List<Double> coordinatesAbove(double altitude){
List<Double> coordinatesAbove = new ArrayList<>();
for (int i = 0; i < array.length; i++) {
coordinatesAbove.add(array[i][2]);
}
coordinatesAbove.removeIf(a -> a < altitude);
return coordinatesAbove;
}
public double percentageAbove(double altitude) {
double percentage = 0;
for (int i = 0; i < array.length; i++) {
if (coordinatesAbove(-2000).contains(array[i][2]))
percentage = percentage + 100 / array.length;
}
return percentage;
}
}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.*;
导入java.util.List;
公共类地图{
静态双[]阵列;
双经纬度;
双高度;
公共静态void main(字符串[]args)引发FileNotFoundException{
Map m=新Map();
m、 readDataArray(“earth.xyz”);
System.out.println(array.deepToString(array));
m、 上述协调(-2000);
m、 百分比高于-2000;
系统输出打印项次(百分比);
}
public void readDataArray(字符串文件名)引发FileNotFoundException{
扫描仪输入=新扫描仪(新文件(文件名));
int countLines=0;
while(input.hasNextLine()){
countLines++;
input.nextLine();
}
数组=新的双精度[2336041][3];
input.close();
输入=新扫描仪(新文件(文件名));
弦卷曲线;
双经纬度;
双高度;
计数线=0;
while(input.hasNextLine()){
curLine=input.nextLine();
字符串[]curData=curLine.split(“\t”);
经度=Double.parseDouble(curData[0]);
纬度=Double.parseDouble(curData[1]);
alti=Double.parseDouble(curData[2]);
数组[countLines][0]=经度;
数组[countLines][1]=纬度;
数组[countLines][2]=高度;
countLines++;
}
}
上述公共列表坐标(双高度){
列表坐标高于=新建ArrayList();
for(int i=0;ia<高度);
回归协调;
}
公共双百分比以上(双高度){
双倍百分比=0;
for(int i=0;i
您的方法返回结果,但您不在任何地方分配它
m.percentageAbove(-2000);
应该是
double percentage = m.percentageAbove(-2000);
你也可以共享导入语句吗?这段代码无法编译。您似乎在与可变范围作斗争?阅读一下:嗨,我已经添加了import语句。另外,当你遇到这样的问题时,最好在每一步都打印出变量的值。很多时候,你对变量值或问题真正所在的位置的假设是错误的,打印语句将帮助你找到真正的问题。@d_johnstone在本页搜索
arrayOfEarth
。它第一次出现是。可能是因为没有这样的数组。您需要后退一步,仔细检查编译器报告的所有错误。