java.length或可能是我的整个程序的问题

时间:2015-04-09 16:56:41

标签: java swing compiler-errors

我在第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

1 个答案:

答案 0 :(得分:0)

你走了:

我注意到了一些事情:

  1. 解决您的问题:我猜您还有IndexOutOfBoundsException

    这与你的for循环中的条件一起出现。在语句中,您在当前索引处迭代String的长度。这有点像在主对角线上遍历矩阵。我想你想迭代数组Inp

    中的所有元素

    所以将你的陈述改为:

    for(int i = 0; i < Int.length; i++){
        //...
    }
    

    应该做的工作。

  2. 关于if语句的快速说明: 第二个} else if (Inp[N] == " ") {是不必要的,因为您已经在" "上拆分了输入字符串。因此,结果中不应该留下任何" "

  3. 请为defaultCloseOperation指定JFrame,以便您的程序正常停止。
  4. 可能还有一些可以改进的东西。