Java 数组搜索时出错

标签 java arrays swing

嘿伙计们,我正在尝试使用drawString()函数来绘制数组中的搜索结果。我正在使用下面的代码

import java.awt.Graphics;

public class canvas extends JPanel{
    int i, count;
    public String read_string = "";
    public String[] names = {"Duncan","Matthew","Kevin","Etc"};
    public String[] searchfor = {"Duncan","Kevin"};
    public canvas() {

    search();


    }

    public void search() {

        for(i=0; i<names.length; i++) {
            read_string = names[i];
            if(read_string.contains("Duncan") || read_string.contains("Kevin")) {

                count++;

                System.out.println(read_string);
                drawThatText(null, read_string, 500*i + 1, 500*i + 1);
            } else {

            }


        }
    }


    public void drawThatText(Graphics g, String s, int x, int y) {


        g.drawString(s, x, y);

    }
}

我收到以下错误

Duncan
java.lang.ExceptionInInitializerError
Caused by: java.lang.ArithmeticException: / by zero
    at canvas.search(canvas.java:33)
    at canvas.<init>(canvas.java:19)
    at Client.<clinit>(Client.java:10)
Exception in thread "main" 

最佳答案

drawThatText(read_string, 500*i + 1, 500*i + 1); is line 33

该行不可能抛出被零除异常。

但是,我确实看到您可能会收到 NullPointerException ,因为您调用

drawThatText(null, ...

然后做

public void drawThatText(Graphics g, String s, int x, int y) {
                         ^^^^^^^^^^^
                       will equal null

    g.drawString(s, x, y);
    ^
    |
    '--- Will throw a NullPointerException

}

这是该程序的不同版本,它应该可以帮助您朝着正确的方向前进:

import java.awt.Graphics;
import javax.swing.*;
public class canvas extends JPanel {
    int i, count;
    public String read_string = "";
    public String[] names = {"Duncan","Matthew","Kevin","Etc"};
    public String[] searchfor = {"Duncan","Kevin"};

    @Override
    public void paintComponent(Graphics g) {
        for(i=0; i<names.length; i++) {
            read_string = names[i];
            if(read_string.contains("Duncan") ||
               read_string.contains("Kevin")) {
                count++;
                System.out.println(read_string);
                drawThatText(g, read_string, 50*i + 10, 50*i + 10);
            }
        }
    }

    public void drawThatText(Graphics g, String s, int x, int y) {
        g.drawString(s, x, y);
    }

    public static void main(String[] args) {
        JFrame jf = new JFrame();
        jf.setContentPane(new canvas());
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setSize(200, 200);
        jf.setVisible(true);
    }
}

enter image description here

关于Java 数组搜索时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7159975/

相关文章:

java - 如何创建边框颜色样式面板?

java - 将按钮放置在图像顶部

java - Java中两个方法如何相减?

java - 如何检查 Jar 文件之间的依赖关系?

"False"值的 php array_filter

javascript - Angular 2 : Convert a complex JSON Object to a Simple one

java - NullPointerException,研究了也找不到原因

java - JRemove JButton 中的默认选择

Java 8 lambda : convert Collection to Map of element, 迭代位置

java - Libgdx 子弹光线转换永远不会碰撞