Java LinkedList中的list.add(字符串)对我来说不正常

Java LinkedList中的list.add(字符串)对我来说不正常,java,string,for-loop,linked-list,Java,String,For Loop,Linked List,我想用以下功能编写程序: 用户将输入他有多少东西。他将输入这些内容,并将这些内容添加到列表中。 我制定了以下代码: public class lists { public static void main(String[] args){ Scanner input = new Scanner(System.in); LinkedList<String> list= new LinkedList<String>(); System.out.print

我想用以下功能编写程序: 用户将输入他有多少东西。他将输入这些内容,并将这些内容添加到列表中。 我制定了以下代码:

public class lists {
public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    LinkedList<String> list= new LinkedList<String>();
    System.out.println("How many things you have?");
    int size=input.nextInt();
    LinkedList<String> list= new LinkedList<String>();
    System.out.println("Enter those things");
    for(int c=1;c<=size;c++) list.add(input.nextLine().toString());     
        System.out.printf("%s",list);

}   

我想知道为什么列表中的第一个字符串是空的,它可以让我输入更少我想要的东西。谢谢您的帮助。

您的代码应该是这样的:

[, 1st Inputed, 2nd Inputed,3rd Inputed, 4nd inputed]
 public class lists {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("How many things you have?");
        int size=input.nextInt();
        LinkedList<String> list= new LinkedList<String>();
        System.out.println("Enter those things");
        for(int c=0 ;c < size; c++)
        {
            String s = input.next();//use next() instead of nextLine()
            list.add(s);     
        }
            System.out.printf("%s",list);

       } 
    }
公共类列表{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“你有多少东西?”);
int size=input.nextInt();
LinkedList=新建LinkedList();
System.out.println(“输入这些内容”);
对于(int c=0;c
如官方文件所述:

使此扫描仪前进到当前行,并返回所需的输入 已跳过。此方法返回当前行的其余部分, 不包括末端的任何行分隔符。该位置设置为 下一行的开头

调用
nextInt()。因此,当第一次调用
nextLine()
时,它实际上是在终止前一行中实际包含值的内容——通过
nextInt()
输入,而不是接收新的
字符串
值。这就是
列表的
字符串
在索引
0
处为空的原因。因此,为了继续读取输入的值而不是前一个空行(因为
nextInt()
)返回的值没有终止),您可以使用根据官方文件规定的值:

查找并返回来自此扫描仪的下一个完整令牌。


问题在于
input.nextLine()
不使用尾随的换行符,因此第一个
input.nextLine()
返回一个空字符串


有几种方法可以解决这个问题。我将把它作为一个练习来解决如何最好地完成它。

您的程序将无法编译,因为变量
list
声明了两次。。