Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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 - Fatal编程技术网

Java中使用不同参数调用方法

Java中使用不同参数调用方法,java,Java,我正在编写一个处理对象识别的简单程序。导致这个问题的原因是我正在考虑并制作一个gui,但这里的问题是它不允许我调用一个方法。我在网站上到处找了找,但没有找到运气。尝试了其他人的不同建议,但仍然一无所获。我只是不知道应该如何使用不同的参数调用方法 这是我试过的 public class Main { private static ImageProcessor ip; public static void main(String[] args) { Main_ m

我正在编写一个处理对象识别的简单程序。导致这个问题的原因是我正在考虑并制作一个gui,但这里的问题是它不允许我调用一个方法。我在网站上到处找了找,但没有找到运气。尝试了其他人的不同建议,但仍然一无所获。我只是不知道应该如何使用不同的参数调用方法

这是我试过的

public class Main {

    private static ImageProcessor ip;
    public static void main(String[] args) {
        Main_ m = new Main_();
        m.main(ip);
    }
}
下面是我试图调用的所需方法

public class Main_ implements PlugInFilter{

......

    public static String launch(ImageProcessor ip){
            ip  = FiltreGaussien_.apply(ip, 3);
            ImageProcessor result = Otsu_.apply(ip);
            Canny_ cannyFilter = new Canny_(result);
            result = cannyFilter.apply(5);
    
            Hough_ houghFilter = new Hough_(result);
            List<Line> lines = houghFilter.apply();
    
    
            try{
                Card card = new Card(lines);
                ip = card.extractCorner(ip);
                ImagePlus imp = new ImagePlus("...", ip);
                new ImageWindow(imp);
            }
            catch(RuntimeException e){
    
            }
    
            ip = Otsu_.apply(ip);
            TemplateMatching_ matcher = new TemplateMatching_();
            return matcher.launch(ip);
        }
}
public-class-Main_uuuu实现插件填充器{
......
公共静态字符串启动(ImageProcessor ip){
ip=FilterGaussien_u2;u应用(ip,3);
图像处理器结果=大津应用(ip);
Canny_uu罐头过滤器=新的Canny_u过滤器(结果);
结果=罐头过滤器。应用(5);
Hough_uh过滤器=新的Hough_h(结果);
列表行=houghFilter.apply();
试一试{
卡=新卡(行);
ip=卡角(ip);
ImagePlus imp=新ImagePlus(“…”,ip);
新图像窗口(imp);
}
捕获(运行时异常e){
}
ip=大津应用(ip);
TemplateMatching\uMatcher=新模板匹配;
返回匹配器启动(ip);
}
}
我的控制台给了我这个

Exception in thread "main" java.lang.NullPointerException
    at ij.process.ByteProcessor.<init>(ByteProcessor.java:96)
    at main.mean.FiltreGaussien_.apply(FiltreGaussien_.java:69)
    at main.card_detection.Main_.launch(Main_.java:30)
    at main.card_detection.Main_.main(Main_.java:22)
    at main.Main.main(Main.java:11)

Process finished with exit code 1
线程“main”java.lang.NullPointerException中的异常 位于ij.process.ByteProcessor。(ByteProcessor.java:96) at main.mean.FilterGaussien_u2;u.apply(FilterGaussien_2;u.java:69) 在main.card\u detection.main\u.launch(main\u.java:30) 在main.card\u detection.main\u.main(main\u.java:22) main.main.main(main.java:11) 进程已完成,退出代码为1
我做错了什么?

这是我们被问到的最常见的问题之一,也是我们最没有能力回答的问题,但你最有能力回答自己

让我解释一下错误的含义:您试图使用变量、属性或方法返回值,但它包含null-这意味着变量中没有类的实例。 它有点像口袋:你的衬衫上有一个口袋,用来装钢笔。如果你把手伸进口袋,发现里面没有钢笔,你就不能在一张纸上签上你的名字——如果你尝试的话,你会得到非常有趣的表情!空口袋会给你一个空值(这里没有笔!),所以你不能做任何你在取回笔后通常会做的事情。为什么是空的?这就是问题所在——可能是你今早出门时忘了拿笔,也可能是你昨晚脱下笔时把笔忘在昨天衬衫的口袋里了

我们不知道,因为我们不在那里,更重要的是,我们甚至看不到你的衬衫,更不用说口袋里有什么了

回到计算机上,不知何故,您也做了同样的事情——我们看不到您的代码,更不用说运行它并找出哪些内容在不应该的时候包含null了。 但是你可以,你的IDE会在这里帮助你。在调试器中运行程序,当它失败时,IDE将显示它发现问题所在的行。然后,您可以开始查看它的各个部分,查看哪个值为null,并开始通过代码查找原因。因此,在包含错误行的方法的开头放置一个断点,然后从一开始就再次运行程序。这一次,它将在错误发生之前停止,并让您通过查看您的值来检查代码中发生了什么


但是我们不能这样做-我们没有你的代码,我们不知道如何使用它如果我们有它,我们没有你的数据。所以试试看,看看你能找到多少信息

您的问题是FilterGaussien_u2;.apply错误地初始化了ByteProcessor-这是堆栈跟踪告诉您的。因为我们既没有FilterGaussian的代码也没有文档,所以我们不能说它有什么问题/某些变量没有初始化。如堆栈跟踪所示,检查FilterGaussian第69行中的代码。可能与您如何吞咽(
捕获
并忽略)启动中的异常有关。使用IDE中的调试器逐步检查代码,以查看哪个变量是
null
。或者你的问题,把你的代码删减到a。这能回答你的问题吗@查理·阿姆斯特朗。对我来说,是在我得到anar1501的答案后。谢谢你的时间和你的解释,现在我明白了这个问题。是时候用调试器查看它了:-)