Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 列表的输出不正确_Java_List_Output - Fatal编程技术网

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

我正在做一个关于列表的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 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