Java 列表的输出不正确
我正在做一个关于列表的Java初学者教程,下面是一个问题Java 列表的输出不正确,java,list,output,Java,List,Output,我正在做一个关于列表的Java初学者教程,下面是一个问题 // 1) Declare am ArrayList of strings // 2) Call the add method and add 10 random strings // 3) Iterate through all the elements in the ArrayList // 4) Remove the first and last element of the ArrayList // 5) Iterate thro
// 1) Declare am ArrayList of strings
// 2) Call the add method and add 10 random strings
// 3) Iterate through all the elements in the ArrayList
// 4) Remove the first and last element of the ArrayList
// 5) Iterate through all the elements in the ArrayList, again.
下面是我的代码
import java.util.ArrayList;
import java.util.Random;
public class Ex1_BasicArrayList {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i <= 10; i++){
Random rand = new Random();
String alphabet = "abcdefghijklmnopqrstuvwxyz";
StringBuilder sb = new StringBuilder();
sb.append(alphabet.charAt(rand.nextInt(alphabet.length())));
String randy = sb.toString();
list.add(randy);
}
for (int i = 0; i < list.size(); i++){
System.out.print(list.get(i));
}
list.remove(0);
list.remove(list.size()-1);
for (int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
}
}
}
有人知道我的代码哪里出错了吗
重复:
System.out.print(list.get(I)),获得每个字母的10个字符串值代码>
System.out.println(list.get(I)),从原始列表中减少2个字符串值代码>
首先,for的
循环应该在i=9
处停止,而不是在i=10
处停止。因此,循环应如下所示:
for (int i = 0; i < 10; i++){
话虽如此,您的实现并不是非常有效,因为它在循环的每次迭代中都会创建一个StringBuilder
,以及一个Random
对象。您只能创建一个Random
对象,以便在每次迭代中使用它。您也不需要一个StringBuilder
。该程序可简化为以下内容,例如:
ArrayList<String> list = new ArrayList<String>();
Random rand = new Random();
String alphabet = "abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < 10; i++){
list.add(String.valueOf(alphabet.charAt(rand.nextInt(alphabet.length()))));
}
ArrayList list=new ArrayList();
Random rand=新的Random();
字符串字母表=“abcdefghijklmnopqrstuvxyz”;
对于(int i=0;i<10;i++){
list.add(String.valueOf(alphabet.charAt(rand.nextInt(alphabet.length()))));
}
首先,
的循环应该在i=9
处停止,而不是在i=10
处停止。因此,循环应如下所示:
for (int i = 0; i < 10; i++){
话虽如此,您的实现并不是非常有效,因为它在循环的每次迭代中都会创建一个StringBuilder
,以及一个Random
对象。您只能创建一个Random
对象,以便在每次迭代中使用它。您也不需要一个StringBuilder
。该程序可简化为以下内容,例如:
ArrayList<String> list = new ArrayList<String>();
Random rand = new Random();
String alphabet = "abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < 10; i++){
list.add(String.valueOf(alphabet.charAt(rand.nextInt(alphabet.length()))));
}
ArrayList list=new ArrayList();
Random rand=新的Random();
字符串字母表=“abcdefghijklmnopqrstuvxyz”;
对于(int i=0;i<10;i++){
list.add(String.valueOf(alphabet.charAt(rand.nextInt(alphabet.length()))));
}
首先:inti=0;i首先:inti=0;我
注意
列表条目会因随机选取而有所不同,但删除前和删除后的大小分别为10和8
注意
列表条目在随机选取时会有所不同,但删除前和删除后的大小分别为10和8'int i=0;我将你的第一个for
循环从i=0
到i=10
,你会得到一个11长度的字符串,但我不知道12个字符来自何处。一个好的调试方法是消除随机性。将数字作为字符串列表,而不是随机字符串(难以调试)。添加(i+“”);'int i=0;我将你的第一个for
循环从i=0
到i=10
,你会得到一个11长度的字符串,但我不知道12个字符来自何处。一个好的调试方法是消除随机性。将数字作为字符串列表,而不是随机字符串(难以调试);只是一个小问题,+”
在最后一行中做了什么?它是否将列表中新添加的内容转换为字符串?我想应该使用toString()方法来实现这一点。@KennethYong Yes与连接起来会生成字符串。或者您可以使用String.valueOf(char)
(请参阅更新的答案),因为前者在幕后使用StringBuilder
,因此效果更好toString
是一种属于扩展Object
类型的方法,可用于打印对象的字符串表示形式。但是它在诸如char
之类的基本类型上不可用。只是一个小问题,+“
在最后一行中做了什么?它是否将列表中新添加的内容转换为字符串?我想应该使用toString()方法来实现这一点。@KennethYong Yes与连接起来会生成字符串。或者您可以使用String.valueOf(char)
(请参阅更新的答案),因为前者在幕后使用StringBuilder
,因此效果更好toString
是一种属于扩展Object
类型的方法,可用于打印对象的字符串表示形式。但它在诸如char
之类的基本类型上不可用。
for (int i = 0; i <= 10; i++)
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Ex1_BasicArrayList {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < 10; i++){
Random rand = new Random();
String alphabet = "abcdefghijklmnopqrstuvwxyz";
StringBuilder sb = new StringBuilder();
sb.append(alphabet.charAt(rand.nextInt(alphabet.length())));
String randy = sb.toString();
list.add(randy);
}
printList(list);
// Remove Elements
list.remove(0);
list.remove(list.size()-1);
printList(list);
}
/**
* @param list
*/
private static void printList(List<String> list) {
System.out.println("List size:"+list.size());
System.out.println("List="+list);
for(String listElement: list){
System.out.println(listElement);
}
}
}
List size:10
List=[k, g, i, a, g, k, s, s, x, t]
k
g
i
a
g
k
s
s
x
t
List size:8
List=[g, i, a, g, k, s, s, x]
g
i
a
g
k
s
s
x