Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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:使用element()打印队列的头部_Java_Queue - Fatal编程技术网

Java:使用element()打印队列的头部

Java:使用element()打印队列的头部,java,queue,Java,Queue,我想使用element()方法打印此名称队列的头,但不知何故它没有打印出来。 你能解释一下为什么没有 package lesson1; import java.util.*; public class MyClass1{ public static void main(String[] args) { Queue <String> strings= new LinkedList<String>(); Scanner input

我想使用element()方法打印此名称队列的头,但不知何故它没有打印出来。
你能解释一下为什么没有

package lesson1;
import java.util.*;

public class MyClass1{

    public static void main(String[] args) {

        Queue <String> strings= new LinkedList<String>();
        Scanner input= new Scanner(System.in);

        System.out.println("Please enter the number of names, n.");
        int n= input.nextInt();

        System.out.println("Please enter " +n+ " names");

        for(int i=0;i<n; i++){

            strings.add(input.nextLine());
        }

        for(String object: strings){

            System.out.println(object);
        }

        System.out.println("The name in front of the queue is: " + strings.element());
    }
}
packagelesson1;
导入java.util.*;
公共课MyClass1{
公共静态void main(字符串[]args){
队列字符串=新的LinkedList();
扫描仪输入=新扫描仪(System.in);
System.out.println(“请输入名称编号,n.”);
int n=input.nextInt();
System.out.println(“请输入”+n+“名称”);

对于(int i=0;i,队列中的第一个元素是空字符串。 这就是为什么
strings.element()
返回一个空字符串,您会看到输出
队列前面的名称是:

要消除空字符串,请添加:

int n= input.nextInt();
input.nextLine(); // this

说明:调用
nextLine
后,下一个
nextLine
将使用包含读取的整数的行尾,因此第一个
strings.add(input.nextLine());
将向队列中添加一个空字符串。

谢谢!我得到了它。.实际上,我已将其从
strings.add(input.nextLine())更改为
strings.add
to
strings.add(input.next());
它现在可以正常工作了..但是,我似乎还是不明白你所说的“下一行
将消耗包含读取的整数的行尾…”请您再解释一遍好吗?@Diksha假设您键入5,然后按enter键。
nextLine
将返回5。下面的
nextLine
将读取包含5的行的其余部分,其中只包含新行字符,去掉新行字符并返回空字符串。只有下一行
nextLine
将重新显示你说的“下一行将读取包含5的行的其余部分”是什么意思?很抱歉我没有理解..我刚开始使用Java..@Diksha我指的是扫描仪读取其输入的行。例如,如果键入5,然后键入enter键,则扫描仪可用的第一行包含5,后面跟着\n(或\r\n,取决于操作系统)“
nextLine
方法不读取\n或\r\n。它只读取5。因此,对
nextLine
的下一次调用将从第一个未读字符开始读取,直到到达行尾。因此它将读取\n或\r\n。由于Scanner方法默认情况下会删除新行字符和空白,因此此下一行将被删除。”返回一个空字符串。