嘿伙计们,我正在尝试使用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);
}
}
关于Java 数组搜索时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7159975/