我有一个涉及Container
,JButton
,JPanel
,JTextArea
和数组的swing应用程序。 String对象的数组,包含5个元素。
我希望通过方法返回数组中的所有元素,并在按下JButton
后将每个元素与最终用户在文本区域中输入的元素进行比较。
如果它们相同,则应显示显示匹配元素的JOptionPane
消息。如果它们不同,则JoptionPane应显示一条消息Number Entered is not found in myArray
,其中包含please Enter something" should appear
我遇到的问题是,当最终用户输入有效号码时,JOptionPane
消息说:Number Entered is not found in myArray
多次出现,例如当输入4时,JoptionPane
消息说
Number Entered is not found in myArray
出现3次。
如果输入的元素正确,如何阻止此消息?
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Array_Search extends JFrame {
String myString[] = { "1", "2", "3", "4", "5" };
public String[] get_Element() {
String str[] = new String[myString.length];
str = myString;
return str;
}
public Array_Search() {
Container pane = getContentPane();
JPanel panel = new JPanel();
final JTextField txt = new JTextField(
" ");
JButton b = new JButton("Click Me ");
panel.add(b);
panel.add(txt);
pane.add(panel);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
String[] str = get_Element();
String s2 = txt.getText().trim();
if (s2 != null && s2.length() > 0)
for (int i = 0; i < str.length; i++) {
if (s2.equals(str[i].trim())) {
JOptionPane option = new JOptionPane();
option.showInputDialog("" + str[i]);
} else {
JOptionPane option = new JOptionPane();
option.showInputDialog("Number Entered is not found in myArray");
}
}
else {
JOptionPane o = new JOptionPane();
o.showInputDialog("please Enter something");
}
}
});
}
public static void main(String[] args) {
Array_Search myArray = new Array_Search();
myArray.setSize(500, 500);
myArray.setVisible(true);
}
}
答案 0 :(得分:2)
在get_Element方法中返回一个空数组。 可以像这样修复:
public void actionPerformed(ActionEvent ae) {
String [] str = get_Element(); // replace this
String [] str = myString; // with this
或将get_Element更改为:
public String[] get_Element() {
return myString;
}
注意:通过Java code conventions使用驼峰大小写方法名称。 getElement而不是get_Element。
答案 1 :(得分:2)
每次找到不匹配的元素时,您的代码都会显示消息。
相反,您需要查看所有元素并在此之后显示Not found
消息。
这样的事情应该有效:
...
if (s2 != null && s2.length() > 0) {
boolean isFound = false;
for (int i = 0; i < str.length; i++) {
if (s2.equals(str[i].trim())) {
JOptionPane option = new JOptionPane();
option.showInputDialog("" + str[i]);
isFound = true;
break;
}
}
if(!isFound) {
JOptionPane option = new JOptionPane();
option.showInputDialog("Number Entered is not found in myArray");
}
} else
...