无法以正确的顺序向ArrayList添加元素

时间:2016-05-31 19:15:16

标签: java

所以我的程序应该迭代一个数字列表(0-113),然后逐行打印数字。如果数字是奇数,则应该在数字旁边添加,如果数字可以被5整除,则应该在数字旁边添加,依此类推。所以我完成了4个布尔方法,它们看起来像这样:

public static boolean isDivisibleBy5(int n){        
    if (n%5 ==0){           
        return true;
    }       
    return false ;          
}

接下来我有一个方法,我需要根据分配要求使用它,如下所示:

public static ArrayList<String>iterate()

因此,使用此方法的定义是我遇到问题的地方。现在我拥有的是:

public static ArrayList<String>iterate(){
    ArrayList<String> list = new ArrayList<String>();
    for(int i=0;i<114;i++){

    if (isOdd(i)){
    list.add(i+" Is odd");
    }
    if(isDivisibleBy5(i)){
        list.add(i+" hi five");
    }
    if(isDivisbleBy7(i)){
        list.add(i+" wow");
    }
    if (isPrime(i)){
        list.add(i+" prime");
    }
    }
    for(String elem:list)
    System.out.println(elem);
    return list;

}

但不幸的是我的输出看起来像这样:

0 hi five
1 Is odd
1 prime
3 Is odd
3 wow
3 prime
5 Is odd
5 hi five
5 prime
7 Is odd
7 prime
9 Is odd
10 hi five
10 wow
11 Is odd

我需要它看起来像这样:

0, hi five
1, Is Odd, prime
2
3, Is odd, wow, prime
4
5, Is Odd, hi five, prime

所以我的问题基本上是如何获得所有条件(如果是真的)将自己添加到具有相应数字的同一行,并且还具有不符合条件打印条件的数字,如2和4和6。 我已经坚持这个问题了一段时间,我觉得有一个关键的java,我没想到这是必需的。 String Builder可能吗?我不确定。任何帮助表示赞赏。即使你能指出一个概念来查找和了解更多。

由于

编辑: 我看到很多关于首先构建字符串然后添加它的响应。我相信这是我没想到的那个让我回头的概念所以我会阅读并练习实现它。再次感谢您的快速回复。当我开始工作时,我会回到这里向所有帮助过的人投票。

2 个答案:

答案 0 :(得分:2)

您需要首先编写字符串,然后只添加一次:

public static ArrayList<String>iterate(){
    ArrayList<String> list = new ArrayList<String>();
    for(int i=0;i<114;i++){
        String toAdd = String.valueOf(i);    

        if (isOdd(i)){
            toAdd += ", Is odd";
        }
        if(isDivisibleBy5(i)){
            toAdd += ", hi five";
        }
        if(isDivisbleBy7(i)){
            toAdd += ", wow";
        }
        if (isPrime(i)){
            toAdd += ", prime";
        }

        list.add(toAdd);
    }

    for(String elem:list)
        System.out.println(elem);

    return list;    
}

答案 1 :(得分:0)

所以从我看到你使用list.add()并在每次调用它时添加一行。不是在每个if语句中使用list.add(),为什么不将所有内容添加到sting中,然后使用list.add(string)将其添加到列表中?

这样的事情:

public static ArrayList<String>iterate(){
    String line =""; //creates line
    ArrayList<String> list = new ArrayList<String>();
    for(int i=0;i<114;i++){
    line += i;
    if (isOdd(i)){
    line +=", Is odd";
    }
    if(isDivisibleBy5(i)){
     line += ", high five"
    }
    ...
    list.add(line);