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;
}