使用队列的Java Pig拉丁句子转换器

使用队列的Java Pig拉丁句子转换器,java,queue,translate,apache-pig,fifo,Java,Queue,Translate,Apache Pig,Fifo,我对Java非常陌生,正在尝试创建一个程序,将一个句子翻译成Pig拉丁语,将单词的第一个字母移到末尾,如果第一个字母是元音,则在末尾添加“y”,否则在末尾添加“ay”。我需要为此使用队列。目前我的程序刚刚结束,我想知道是否有人能够发现我的错误或下一步的方向。谢谢 导入MyQueue.QueueList; 导入java.util.Scanner 公共级拉丁语 { 在进入第二个while循环之前,不能将索引重置为0。因为第一个循环结束后,第二个循环立即终止 编辑:Re:您的最新更新 在第二个循环中,

我对Java非常陌生,正在尝试创建一个程序,将一个句子翻译成Pig拉丁语,将单词的第一个字母移到末尾,如果第一个字母是元音,则在末尾添加“y”,否则在末尾添加“ay”。我需要为此使用队列。目前我的程序刚刚结束,我想知道是否有人能够发现我的错误或下一步的方向。谢谢

导入MyQueue.QueueList; 导入java.util.Scanner

公共级拉丁语 {


在进入第二个while循环之前,不能将索引重置为0。因为第一个循环结束后,第二个循环立即终止

编辑:Re:您的最新更新

在第二个循环中,您仅将单词队列中的第一个message.length()字符出列。如果在末尾添加了-ay,您将看不到它。相反,请在队列长度上循环,而不是在输入消息的长度上循环:

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

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

您可以在代码上运行格式化程序吗?跟踪您的条件有点困难。缩进已修复。ctrl-k缩进与制表符不兼容,很抱歉第一次编辑时出错。谢谢您的缩进帮助。我已将其编辑为我的程序的最新版本,该版本目前不会翻译,而是准确打印输入的内容。我已更新了下面的答案。我已修复了该问题(非常感谢您捕获它)并上传了一个编辑过的版本,但我的程序只打印我输入的句子以及句子末尾的第一个字母。有什么建议吗?谢谢你,Jason。我不完全确定如何处理单个单词,但会研究它。我对for循环有一个问题。这些不正确是因为我不应该将index=1设置为处理单个单词?另外,我在开始时对整个事情进行了一个while循环的原因是我认为要处理单个单词,但这是错误的做法?我要做的是编写一个方法,将单个单词更改为Pig拉丁语。获取输入句子,并检查String.split()。尝试一下。你可以用它把一个句子分成一个单词数组。转换每个单词,然后把它们重新组合成一个句子。顺便说一句,你使用1的原因是跳过第一个字母——我觉得这很合理。在一张纸上写下你的算法,完成步骤,然后将其翻译成Java.
// 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();
    }

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