Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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 System.out.print()读取扫描仪时出错_Java_Input_Output_Java.util.scanner_System.out - Fatal编程技术网

Java System.out.print()读取扫描仪时出错

Java System.out.print()读取扫描仪时出错,java,input,output,java.util.scanner,system.out,Java,Input,Output,Java.util.scanner,System.out,我试图为我的一个类编写这个程序,但我的输出遇到了问题。它应该读取我为扫描仪输入的任何内容。然而,输出跳过了第一个单词,我真的不知道为什么。可以忽略main方法中的大多数变量声明。这些仅对程序的其余部分有用 public static void main(String[] args) { String fullName; int anniversaryM; int anniversaryY; int periodHours; String jobTitl

我试图为我的一个类编写这个程序,但我的输出遇到了问题。它应该读取我为
扫描仪输入的任何内容。然而,输出跳过了第一个单词,我真的不知道为什么。可以忽略main方法中的大多数变量声明。这些仅对程序的其余部分有用

public static void main(String[] args) {

    String fullName;
    int anniversaryM;
    int anniversaryY;
    int periodHours;

    String jobTitle;
    double payRate;
    int monthsWorked;
    double vacationHours;
    double grossPay;
    double retirement;
    double taxWithholding;
    double netPay;

    Scanner in = new Scanner(System.in); 

    fullName = inputLine(in, "Enter your full name:");
    System.out.print(fullName);
}

public static double inputNumber(Scanner input, String prompt) {

    Scanner in = new Scanner(System.in);

    in.nextDouble();
    return in.nextDouble();
}

public static String inputLine(Scanner input, String prompt) {

    Scanner in = new Scanner(System.in); 

    System.out.println(prompt);
    in.next();
    return in.next();
}

public static double calcPercentage(double grossPay, double retirement) {

    Scanner in = new Scanner(System.in);

    in.nextDouble();
    return in.nextDouble();
}
输出:

输入您的全名:
无名氏
母鹿


您对.next()中的
进行了双重调用。只要把它取下来,你就没事了。此外,请注意,您正在将
扫描仪
传递给该方法,因此不应在该方法内创建新的:

public static String inputLine(Scanner input, String prompt) {
    System.out.println(prompt);
    return input.nextLine();
}

我认为你的问题在于.next()中的
;返回.next()。在这种情况下,如果要返回.next()中
的值,它将调用读取器两次
你应该把它放在一个容器中并返回那个容器,或者直接返回
return in.next()

使用该方法时,它只打印出“John”而不是完整的“John Doe”。@NicholasSandore如果您想允许在其中输入空格,则应使用
nextLine
而不是
next
。看我编辑的答案。这似乎有效!我在Java是一个完全的业余爱好者,因为我刚开始大学一年级的学习,所以我为缺乏基础知识而道歉。非常感谢你!