Java 打印不带括号的arraylist

Java 打印不带括号的arraylist,java,Java,我正试图让我的输出在没有括号的情况下显示。我觉得这是件简单的事情,但就是想不出来 输出如下所示 22 ([1, 2, 11]) 33 ([1, 3, 11]) 44 ([1, 2, 4, 11, 22]) 55 ([1, 5, 11]) 66 ([1, 2, 3, 6, 11, 22, 33]) 77 ([1, 7, 11]) 22 (1, 2, 11) 33 (1, 3, 11) 44 (1, 2, 4, 11, 22) 55 (1, 5, 11) 66 (1, 2, 3

我正试图让我的输出在没有括号的情况下显示。我觉得这是件简单的事情,但就是想不出来

输出如下所示

22 ([1, 2, 11]) 
33 ([1, 3, 11]) 
44 ([1, 2, 4, 11, 22]) 
55 ([1, 5, 11]) 
66 ([1, 2, 3, 6, 11, 22, 33]) 
77 ([1, 7, 11]) 
22 (1, 2, 11) 
33 (1, 3, 11) 
44 (1, 2, 4, 11, 22) 
55 (1, 5, 11) 
66 (1, 2, 3, 6, 11, 22, 33) 
77 (1, 7, 11) 
但我希望它没有括号显示,所以它看起来像这样

22 ([1, 2, 11]) 
33 ([1, 3, 11]) 
44 ([1, 2, 4, 11, 22]) 
55 ([1, 5, 11]) 
66 ([1, 2, 3, 6, 11, 22, 33]) 
77 ([1, 7, 11]) 
22 (1, 2, 11) 
33 (1, 3, 11) 
44 (1, 2, 4, 11, 22) 
55 (1, 5, 11) 
66 (1, 2, 3, 6, 11, 22, 33) 
77 (1, 7, 11) 
这是我的一段代码

import java.util.ArrayList;

public class Palindrome {
    public static void main(String[] args) {
        int e = 0;
        // palindromic composite number
        int drome = 0;
        // starting int range
        int start = 10;
        // ending int range
        int end = 10000;
        for (int i = start; i <= end; i += 1) {
            if (isPalindromic(i)) {
                drome = i;
                if (!isPrime(i))
                    System.out.println(drome + " (" + getDivisors(drome) + ")");
            }
        }
    }

    // gets gets the divsors and adds them to arraylist if divsor is a
    // palindrome
    public static ArrayList getDivisors(int number) {
        ArrayList numbersDivisor = new ArrayList();
        int i = 0;
        for (i = 1; i < number; i++) {
            if (number % i == 0 && i != number && isPalindromic(i)) {
                numbersDivisor.add(i);
            }
        }
        return numbersDivisor;
    }
import java.util.ArrayList;
公共类回文{
公共静态void main(字符串[]args){
int e=0;
//回文复合数
int drome=0;
//起始整数范围
int start=10;
//结束整数范围
int end=10000;

对于(int i=start;i尝试改用
StringBuilder

public static StringBuilder getDivisors(int number) {
    StringBuilder numbersDivisor = new StringBuilder();
    int i = 0;
    for (i = 1; i < number; i++) {
        if (number % i == 0 && i != number && isPalindromic(i)) {
            numbersDivisor.append(i).append(',');
        }
    }
    if(0 < (i = numbersDivisor.length())) {
        numbersDivisor.deleteCharAt(i - 1);//remove that last comma
    }
    return numbersDivisor;
}


您可以尝试@LuiggiMendoza给出的建议。

我认为最简单的解决方案可能是修改您的方法以返回一个
字符串

public static String getDivisors(int number) {
    StringBuilder sb = new StringBuilder();
    for (int i = 1; i < number; i++) {
        if (number % i == 0 && i != number && isPalindromic(i)) {
            if (sb.length() > 0) {
                sb.append(", ");
            }
            sb.append(i);
        }
    }
    return sb.toString();
}
然后 如果(!iPrime(i)){ String str=getDivisors(drome).toString(); str=str.substring(1,str.length()-1); System.out.println(drome+“(“+str+”)); }

System.out.println()
方法使用
toString()
方法(内部深处)为作为参数传递的任何对象打印内容。
ArrayList
class继承了
AbstractList
类,该类继承了
AbstractCollection
类,该类已覆盖
java.lang.Object
类的
toString()
方法。以下是
AbstractCollection
类中toString()方法的默认实现:

 public String toString() {
    Iterator<E> i = iterator();
    if (! i.hasNext())
        return "[]";

    StringBuilder sb = new StringBuilder();
    sb.append('[');
    for (;;) {
        E e = i.next();
        sb.append(e == this ? "(this Collection)" : e);
        if (! i.hasNext())
            return sb.append(']').toString();
        sb.append(", ");
    }
}
现在通过以下方式修改
getDivisors()
方法:

public static BracketlessArrayList getDivisors(int number) {
    BracketlessArrayList numbersDivisor = new BracketlessArrayList();
    int i = 0;
    for (i = 1; i < number; i++) {
        if (number % i == 0 && i != number && isPalindromic(i)) {
            numbersDivisor.add(i);
        }
    }
    return numbersDivisor;
}
公共静态括号sarraylist getdivisions(整数){
BracketlessArrayList numbersDivisor=新的BracketlessArrayList();
int i=0;
对于(i=1;i

这将为您提供正确的方法。

将结果
数组列表
存储在一个变量中。将调用
到字符串
的结果存储在另一个
字符串
中。从该
字符串
中修剪括号并使用它打印。一个简单的方法是替换所有
[
]
使用。
getDivisors(drome).toString().replaceAll(“[\\[\]]”,“”)的字符
但这仅适用于您的数据结构,因为您的数据结构不包含任何可能包含方括号字符的
字符串。这不是一个完全通用的解决方案。您不能简单地将
列表
分配给
字符串
变量。您需要执行以下操作:
字符串str=getDivisors(drome).toString();
public static BracketlessArrayList getDivisors(int number) {
    BracketlessArrayList numbersDivisor = new BracketlessArrayList();
    int i = 0;
    for (i = 1; i < number; i++) {
        if (number % i == 0 && i != number && isPalindromic(i)) {
            numbersDivisor.add(i);
        }
    }
    return numbersDivisor;
}