【发布时间】:2015-05-13 03:46:52
【问题描述】:
package javaisnotbannana;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
public class Javaisnotbannana{
public static void main(String[] args) {
window();
}
////////////////////////////////////////////////////
public static void window()
{
JFrame window= new JFrame();
JPanel jp = new JPanel();
JLabel jl = new JLabel();
JTextField jt = new JTextField(30);
JButton jb = new JButton("Enter");
window.setTitle("ThisisTitleofWindow");
window.setVisible(true);
window.setSize(500, 500);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//textfield
jp.add(jt);
jt.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String inoutt = jt.getText();
jl.setText(inoutt);
}
});
为什么这个下部有问题“线程中的异常“AWT-EventQueue-0”java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:(我输入了多少个字符)“.str 正在接收输入的内容在 Jtextfield 中,我试图过滤输入以提供不同的输出。如果没有过滤器,它可以像上面一样正常工作,只需按 enter,但是当我尝试按下按钮 i 并过滤时,我得到一个错误。
//button
jp.add(jb);
jb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String str = jt.getText();
String text="";
int A=0;
int B=1;
int C=2;
for(int num=0;num<=str.length()/3;num++)
{
if (str.charAt(A) == 'T'&&str.charAt(B) == 'A'&&str.charAt(C)=='S')
{
text+="smell tasty";
}
else if(str.charAt(A) == 'B'&&str.charAt(B) == 'A'&&str.charAt(C)=='N')
{
text+="bannanas";
}
A+=3;
B+=3;
C+=3;
}
jl.setText(text);
}
});
jp.add(jl);
window.add(jp);
}
}
【问题讨论】:
-
检查行号,正在操作的字符串,它试图命中的字符串索引。索引看起来合适吗?我怀疑这是因为 A、B 或 C 变成 >= 字符串的长度。
-
这条线有错误“for(int num=0;num
-
您确定
if (str.charAt(A) == 'T'&&str.charAt(B) == 'A'&&str.charAt(C)=='S')行没有发生这种情况吗? :S -
if ("tas".equalsIgnoreCase(str)) { text = "smell tasty"; }之类的? -
它说我超出了我输入的数量所以 String str = jt.getText();可能什么都没有,但它应该使它等于我输入的文本。
标签: java string jframe jtextfield indexoutofboundsexception