我在第56行的代码中出错。我正在尝试创建一个将句子转换为pig Latin的程序。
任何人都能理解为什么这段代码没有运行?它已经准备就绪了。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;
public class PigLatin extends JFrame implements ActionListener {
JLabel lblInput, lblOutput;
TextField txtInput, txtOutput;
Button btnReverse, btnClear;
String Broken;
Container frame;
public PigLatin() {
frame = getContentPane();
setTitle("PigLatin"); // Set the frame's name
lblInput = new JLabel("Enter a phrase");
lblOutput = new JLabel("Pig Latinified");
txtInput = new TextField(50);
txtOutput = new TextField(50);
btnReverse = new Button("Reverse String");
btnClear = new Button("Clear");
frame.setLayout(new GridLayout(3, 2));
frame.add(lblInput);
frame.add(txtInput);
frame.add(lblOutput);
frame.add(txtOutput);
frame.add(btnReverse);
frame.add(btnClear);
btnReverse.addActionListener(this);
btnClear.addActionListener(this);
setSize(400, 300);
setVisible(true);
} // Constructor
public void actionPerformed(ActionEvent e) {
String DNC = "does not compute";
Broken = txtInput.getText();
String Inp[] = Broken.split(" ");
int N;
for (int i = 0; i < Inp[i].length(); i++) {
N = i;
char Q = Inp[N].charAt(0);
char Vowel = Inp[N].charAt(1);
if (Q == 'a' || Q == 'e' || Q == 'i' || Q == 'o' || Q == 'u') {
txtOutput.setText("" + Inp[N] + "way");
} else if (Q == 'q' && Vowel == 'u') {
String quay = Inp[N];
quay = quay.replaceAll("q", "");
quay = quay.replaceAll("u", "");
txtOutput.setText(quay + "quay");
} else if ((Q == 'q' != true) && (Vowel == 'u' != true)) {
String Reg = Inp[N];
Reg = Reg.replaceAll("" + Q, "");
txtOutput.setText(Reg + Q + "ay");
} else if (Inp[N] == " ") {
txtOutput.setText("" + DNC + "");
} else {
txtOutput.setText("" + Inp + "");
}
}
}
public static void main(String[] args) {
new PigLatin(); // Create a PigLatin frame
} // main method
} // PigLatin class
答案 0 :(得分:0)
你走了:
我注意到了一些事情:
解决您的问题:我猜您还有IndexOutOfBoundsException
这与你的for循环中的条件一起出现。在语句中,您在当前索引处迭代String的长度。这有点像在主对角线上遍历矩阵。我想你想迭代数组Inp
所以将你的陈述改为:
for(int i = 0; i < Int.length; i++){
//...
}
应该做的工作。
关于if语句的快速说明:
第二个} else if (Inp[N] == " ") {
是不必要的,因为您已经在" "
上拆分了输入字符串。因此,结果中不应该留下任何" "
。
defaultCloseOperation
指定JFrame
,以便您的程序正常停止。可能还有一些可以改进的东西。