Java 打印ArrayList的所有项

Java 打印ArrayList的所有项,java,arraylist,Java,Arraylist,我知道这是一个非常基本的问题,但我一直在寻找,没有找到适合我问题的答案。我有一个从扫描仪填充的对象数组列表。当我试图打印出列表中的所有元素时,最后一个元素的重复次数与列表中的对象相同 首先是对象类: public class Colors { String name; @Override public String toString(){ return name.toString(); } } 现在主要的课程是: import java.uti

我知道这是一个非常基本的问题,但我一直在寻找,没有找到适合我问题的答案。我有一个从扫描仪填充的对象数组列表。当我试图打印出列表中的所有元素时,最后一个元素的重复次数与列表中的对象相同

首先是对象类:

public class Colors {
    String name;

    @Override
    public String toString(){
        return name.toString();
    }
}
现在主要的课程是:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

 public class Vec { 
    public static void main(String[] args) {
    Colors col= new Colors();
    List <Colors> l = new ArrayList<>();
    boolean flag = true;

    while(flag == true){
       System.out.println("Type in name of color");
       Scanner kb = new Scanner (System.in);
       col.name = kb.next();
       l.add(col);

       for (int j= 0; j<l.size();j++) {
           Object g = (Object)l.get(j);
           System.out.println("Name of color: "+g);
       }
     }
   }
} 
import java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公共类向量{
公共静态void main(字符串[]args){
颜色col=新颜色();
列表l=新的ArrayList();
布尔标志=真;
while(flag==true){
System.out.println(“输入颜色名称”);
扫描仪kb=新扫描仪(System.in);
col.name=kb.next();
l、 添加(col);

对于(int j=0;j您正在使用
new
关键字在Java中声明对象。您只声明了
Colors
的一个实例,然后一次又一次地更改其名称。然后将相同的
Colors
添加到列表中。您需要做的是更改声明
Colors
的位置,即可以在
while
语句中执行

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Vec
{
    public static void main(String[] args) {
        List <Colors> l = new ArrayList<>();
        boolean flag = true;

        Scanner kb = new Scanner (System.in);

        while (flag) {
            System.out.println("Type in name of color");

            Colors col = new Colors ();
            col.name = kb.next();
            l.add(col);

            for (int j = 0; j<l.size();j++) {
                Object g = (Object)l.get(j);
                System.out.println("Name of color: "+g);
            }
        }
    }
}

您正在使用
new
关键字在Java中声明对象。您只声明了
Colors
的一个实例,然后一次又一次地更改其名称。然后将相同的
Colors
添加到列表中。您需要做的是更改声明
Colors
的位置,这是可以做到的在
while
语句中

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Vec
{
    public static void main(String[] args) {
        List <Colors> l = new ArrayList<>();
        boolean flag = true;

        Scanner kb = new Scanner (System.in);

        while (flag) {
            System.out.println("Type in name of color");

            Colors col = new Colors ();
            col.name = kb.next();
            l.add(col);

            for (int j = 0; j<l.size();j++) {
                Object g = (Object)l.get(j);
                System.out.println("Name of color: "+g);
            }
        }
    }
}

您正在使用
new
关键字在Java中声明对象。您只声明了
Colors
的一个实例,然后一次又一次地更改其名称。然后将相同的
Colors
添加到列表中。您需要做的是更改声明
Colors
的位置,这是可以做到的在
while
语句中

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Vec
{
    public static void main(String[] args) {
        List <Colors> l = new ArrayList<>();
        boolean flag = true;

        Scanner kb = new Scanner (System.in);

        while (flag) {
            System.out.println("Type in name of color");

            Colors col = new Colors ();
            col.name = kb.next();
            l.add(col);

            for (int j = 0; j<l.size();j++) {
                Object g = (Object)l.get(j);
                System.out.println("Name of color: "+g);
            }
        }
    }
}

您正在使用
new
关键字在Java中声明对象。您只声明了
Colors
的一个实例,然后一次又一次地更改其名称。然后将相同的
Colors
添加到列表中。您需要做的是更改声明
Colors
的位置,这是可以做到的在
while
语句中

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Vec
{
    public static void main(String[] args) {
        List <Colors> l = new ArrayList<>();
        boolean flag = true;

        Scanner kb = new Scanner (System.in);

        while (flag) {
            System.out.println("Type in name of color");

            Colors col = new Colors ();
            col.name = kb.next();
            l.add(col);

            for (int j = 0; j<l.size();j++) {
                Object g = (Object)l.get(j);
                System.out.println("Name of color: "+g);
            }
        }
    }
}

我认为最好提及op正在处理范围问题。我确实声明了“这里的区别是col现在在while语句的本地范围中重新声明。”不过,我可以重新表述一下,让它更清楚。Emz,我会记住你的建议。谢谢你快速有效的回复。问题是当时的范围问题……我认为最好提及op正在处理范围问题。我确实陈述过“这里的区别是col现在在while语句的本地范围内重新声明。“不过,我可以重新表述一下,让它更清楚。埃姆兹,我会记住你的建议。谢谢你快速有效的回复。当时的问题是范围问题……我认为最好提及op正在处理范围问题。我确实陈述了这一点“这里的区别是col现在在while语句的本地范围内重新声明。“不过,我可以重新表述一下,让它更清楚。埃姆兹,我会记住你的建议。谢谢你快速有效的回复。当时的问题是范围问题……我认为最好提及op正在处理范围问题。我确实陈述了这一点“这里的区别是,col现在在您的while声明的本地范围内重新声明。”不过,我可以将其重新措辞以使其更清楚。Emz,我将记住您的建议。感谢您快速有效的回复。当时的问题是范围问题。。。