Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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_Java.util.scanner - Fatal编程技术网

JAVA:为什么扫描仪只在输入按特定顺序时工作

JAVA:为什么扫描仪只在输入按特定顺序时工作,java,java.util.scanner,Java,Java.util.scanner,我刚刚开始学习Java,所以我只是在尝试基本的输入选项。然而,代码没有起作用 我所做的只是在整数输入之前更改字符串输入值,代码开始工作 第一: 第二: 请帮助我理解这两个代码之间的区别以及第一个代码不起作用的原因,但是第二个例子不起作用。第一个例子不起作用,因为nextLine和nextDouble不使用换行所需的行终止符,这是按照预期使用nextLine所必需的。在第二个场景中,首先执行nextLine,这将使用行终止符,以便代码正确运行 第一个示例可以通过额外调用s.nextLine()来修

我刚刚开始学习Java,所以我只是在尝试基本的输入选项。然而,代码没有起作用

我所做的只是在
整数输入之前更改
字符串输入值
,代码开始工作

第一:

第二:


请帮助我理解这两个代码之间的区别以及第一个代码不起作用的原因,但是第二个例子不起作用。

第一个例子不起作用,因为
nextLine
nextDouble
不使用换行所需的行终止符,这是按照预期使用
nextLine
所必需的。在第二个场景中,首先执行
nextLine
,这将使用行终止符,以便代码正确运行

第一个示例可以通过额外调用
s.nextLine()
来修复,并且不将值存储到变量中,这将确保
扫描仪在执行下一个操作之前移动到下一行。如下所示:

int i=s.nextInt();
double d=s.nextDouble();
s.nextLine();
String str=s.nextLine();

这是普通人在结合使用
nextLine()
nextLine()
时会遇到的问题。请确保正确移动到下一行,以便在一起使用时获得正确的值。

您了解其中的哪些部分?@ScottHunter我的意思是,当我尝试第一个代码时,我无法输入字符串值,而当我尝试第二个代码时,程序工作正常,所以我不明白代码2是如何工作的,但不明白第二个当你说“不工作”时,你的确切意思是什么?学习阅读错误消息将在学习编码时对您有很大帮助。在第一个示例中,它首先需要一个整数。你有没有输入一个数字或其他什么?调用scanner方法的顺序会更改它在每个步骤中希望采用的输入类型。该字符串可以接受您键入的任何内容,但如果在需要整数时键入“hello”,则无法将其解析为int。@Phaelaxz yes我完全按照我在顺序中定义的方式获取输入,我的意思是,当我第一次输入整数值(ex:1)然后输入双倍值(ex:10.15)时,它不允许我输入字符串,而是直接打印打印语句。
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner s = new Scanner (System.in);

        String str=s.nextLine();
        int i=s.nextInt();
        double d=s.nextDouble();

        System.out.println("String :"+str);
        System.out.println("Double : "+d);
        System.out.println("int : "+i);
    }
}
int i=s.nextInt();
double d=s.nextDouble();
s.nextLine();
String str=s.nextLine();