使用队列的java pig拉丁句翻译程序

jc3wubiy  于 2021-06-24  发布在  Pig
关注(0)|答案(1)|浏览(404)

我对java非常陌生,正在尝试创建一个程序,将一个句子翻译成pig拉丁语,将单词的第一个字母移到末尾,如果第一个字母是元音,则在末尾添加“y”,否则在结尾添加“ay”。我需要为此使用队列。目前,我的程序刚刚结束,我想知道是否有人可能会发现我哪里做错了或下一个方向。谢谢!
导入myqueue.queuelist;导入java.util.scanner;
公共类piglatin{

public static void main (String[] args)
 {

    Scanner scan = new Scanner (System.in);

    QueueList word = new QueueList();

    String message;
    int index = 0;
    char firstch;
    System.out.print ("Enter an English sentence: ");
    message = scan.nextLine();
    System.out.println ("The equivalent Pig Latin sentence is: ");

    firstch = Character.toLowerCase(message.charAt(0));

            if (firstch != 'a' && firstch != 'e' && firstch != 'i' && firstch != 'o' && firstch != 'u' 
                    && firstch != ' ')
                {
                    for (index = 1; index < message.length(); index++)

                        {
                            word.enqueue(new Character(message.charAt(index)));
                        }

                    word.enqueue(new Character (firstch));
                    word.enqueue(new Character ('a'));
                    word.enqueue(new Character ('y'));
                    word.enqueue(new Character(' '));

                }

            else if (firstch == 'a' || firstch == 'e' || firstch == 'i' || firstch == 'o' || firstch == 'u')
            {
                while (message.charAt(index) != ' ')
                {
                for (index = 1; index < message.length(); index++)
                        {   
                            word.enqueue(new Character(message.charAt(index)));
                        }
                }
                word.enqueue((firstch));
                word.enqueue( ('y'));
                word.enqueue((' '));
            }
            else if (message.charAt(index) == ' ')
            {
                index++;
                firstch = message.charAt(index);
            }

    while (!word.empty())
        System.out.print(word.dequeue());

}

}
下面是myqueue包中的queuelist类:

// QueueList.java
//
// Class QueueList definition with composed List object.    

package MyQueue;

public class QueueList {

    private List a_queue;

    public QueueList() {
        a_queue = new List( "queue" );
    }

    public Object peek() throws EmptyListException {
        if (a_queue.isEmpty())
            return null;
        else
            return a_queue.getFirstObject();
    }

    public void print() {
        a_queue.print();
    }

    public void enqueue(Object object) {
        a_queue.insertAtBack(object);
    }

    public Object dequeue() throws EmptyListException {
        return a_queue.removeFromFront();
    }

    public boolean empty() {
        return a_queue.isEmpty();
    }

}
ht4b089n

ht4b089n1#

在进入第二个while循环之前,不能将索引重置为0。自 index == message.length() 第一个循环结束后,第二个循环立即终止。
编辑:回复:您的最新更新。
在第二个循环中,只将单词队列中的第一个message.length()字符出列。如果你在结尾加了-ay,你就看不到了。相反,循环队列的长度,而不是输入消息的长度:

while (!word.empty())
    System.out.print(word.dequeue());

我可以用你的逻辑发现许多其他问题(你没有删除第一个字母,也没有处理句子中的单个单词),但是上面的更改应该足以让你打印队列中的内容,并让你继续调试。

相关问题