繁体   English   中英

我的ArrayList只是打印数字

[英]My ArrayList (s) are just printing numbers

我正在尝试写一些接受字符串并像这样翻译的代码; 1.取第一个字母并将其放置在每个单词的单词末尾。2.找到第一个元音,然后放一个“ b”,然后再输入一个元音3.与#2相同,除了最后一个元音

我想我有点接近,但我的输出是所有数字。 它甚至看起来都不像它的存储地址。
我希望这对其他人有帮助,因为他们可能在return语句中打印数组列表时可能遇到相同的问题。 顺便说一句,这是一个巨大的代码块...对不起。 我这样做的唯一原因是,我不必将两个类都放在这里。

这是代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Experiment {
    public static void main(String[] args){
        String pre = "For every minute you are angry you loose sixty seconds of happiness.";

        System.out.println(translate(pre));
    }

    public static String translate(String sentence){
        String[] sentenceArray = sentence.split(" ");
        List<String> sentenceList = new ArrayList<>();
        List<String> finalList = new ArrayList<>();
        String punctuation = getPunctuation(sentenceArray[sentenceArray.length - 1]);
//add all words but the last so i can take punctuation off it
        for (int i = 0; i < sentenceArray.length - 1; i ++){
            sentenceList.add(sentenceArray[i]);
        }
//take the first letter off each word and put at at the end of each word
        Arrays.asList(sentenceArray);
        for (String el : sentenceArray)
            sentenceList.add(firstToLast(el));
    //use the addFrontB method on each word     
        Arrays.asList(sentenceList);
        for (String la : sentenceList){
            finalList.add(addFrontB(la));
        }
//use the addBackB method on each word
        Arrays.asList(sentenceList);
        for (String le : sentenceList){
            finalList.add(addBackB(le));
        }
        return finalList + punctuation + "\n";
    }
//finds the last character of the last word which is punctuation
    public static String getPunctuation(String word){
        return word.charAt(word.length() - 1) + "";
    }
//takes the punctuation off
    public static String removePunctuation(String word){
        String newWord;
        newWord = word.substring(word.length(), word.length());
        return newWord;
    }
//puts the first letter at the end of the word
    public static String firstToLast(String word){
        char letter = word.charAt(0);
        String newWord = word.substring(1,word.length()) + letter;
        return newWord;
    }
//insterts a b and then the same vowel behind the first vowel
    public static String addFrontB(String word){
        StringBuilder finishedWord = new StringBuilder();

        for (int i = 0; i < word.length(); i ++){
            if (word.charAt(i) == 'a')
                finishedWord = finishedWord.append(word.charAt(i) + 'b' + word.charAt(i));
            else if (word.charAt(i) == 'e')
                finishedWord = finishedWord.append(word.charAt(i) + 'b' + word.charAt(i));
            else if (word.charAt(i) == 'i')
                finishedWord = finishedWord.append(word.charAt(i) + 'b' + word.charAt(i));
            else if (word.charAt(i) == 'o')
                finishedWord = finishedWord.append(word.charAt(i) + 'b' + word.charAt(i));
            else if (word.charAt(i) == 'u')
                finishedWord = finishedWord.append(word.charAt(i) + 'b' + word.charAt(i));
            }
        String newWord = finishedWord.toString();
        return newWord;

    }
//does the same as addFirstB but at the end of the word
    public static String addBackB(String word){
        StringBuilder finishedWord = new StringBuilder();
        finishedWord.append(word);
        finishedWord.reverse();
        for (int i = 0; i < word.length(); i ++){
            if (finishedWord.charAt(i) == 'a')
                finishedWord.append(finishedWord.charAt(i) + 'b').reverse();
            else if (finishedWord.charAt(i) == 'e')
                finishedWord.append(finishedWord.charAt(i) + 'b').reverse();
            else if (finishedWord.charAt(i) == 'i')
                finishedWord.append(finishedWord.charAt(i) + 'b').reverse();
            else if (finishedWord.charAt(i) == 'o')
                finishedWord.append(finishedWord.charAt(i) + 'b').reverse();
            else if (finishedWord.charAt(i) == 'u')
                finishedWord.append(finishedWord.charAt(i) + 'b').reverse();
        }       
        return finishedWord.toString();
    }
}
    return finalList + punctuation + "\n";

您在这里将List视为字符串。.是否需要执行.toString()或类似的操作?

asList(T... a)
Returns a fixed-size list backed by the specified array.

您也不使用Arrays.asList的返回值

您的错误在这里:

return finalList + punctuation + "\n";

由于您使用加号运算符添加了“ \\ n”,因此java会调用列表的toString()方法,该方法将返回废话。 您必须遍历列表并构建自己的字符串,最佳实践是使用StringBuffers。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM