Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取要调用的方法时遇到的问题_Java_Arrays - Fatal编程技术网

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
。它第一次出现是。可能是因为没有这样的数组。您需要后退一步,仔细检查编译器报告的所有错误。