如何具有用于多个用户输入的多个扫描仪



我正在写一个小程序,根据用户输入的名字和生日来创建密码,并根据这个密码创建密码,我不知道我在做什么,但相信我需要多个扫描仪,但当我这样做时,我会收到这个错误"变量扫描已在方法main中定义(string[](Scanner scan=new Scanner(System.in(">

这是我的代码

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.print("Please Enter your first name: ");
Scanner scan = new Scanner(System.in);
String name = scan.nextLine();
System.out.print("Please Enter your last name: ");
Scanner scan = new Scanner(System.in);
String name = scan.nextLine();
scan.close();
}
}

有什么可行的想法吗?

不需要多个Scanner对象来接受多个输入。您应该创建一个Scanner对象,并使用它来收集所需的输入。

这里有一个例子:

import java.util.*;
public class Main
{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);

System.out.println("Enter your first name: ");
String fname = input.nextLine();

System.out.println("Enter your last name: ");
String lname = input.nextLine();

System.out.println("Enter your age: ");
int age = Integer.parseInt(input.nextLine());

System.out.println("Your details as entered:");

System.out.println("First Name: " + fname);
System.out.println("Last Name: " + lname);
System.out.println("Age: " + age);
}
}

还有一些额外的资源给你(扫描仪类(:https://www.w3schools.com/java/java_user_input.asp

编辑:

  • 将next((替换为nextLine((
  • 将nextInt((替换为Integer.parseInt(input.nextLine(((

非常感谢您提供信息@Arvind Kumar Avinash。引用线程:扫描程序在使用next((或nextFo((?之后将跳过nextLine((?。

这是因为在同一范围内不能有两个同名的变量。

你应该重命名其中一个。。

请注意,您对String变量name;(执行了相同的操作

如果您想同时使用相同的名称,则不应重新声明变量:

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan;
String name;
System.out.print("Please Enter your first name: ");
scan = new Scanner(System.in);
name = scan.nextLine();
scan.close();
System.out.print("Please Enter your last name: ");
scan = new Scanner(System.in);
name = scan.nextLine();
scan.close();
}
}

注:

  • 在本例中,您将松开用户输入的第一个值。您可能需要使用其他变量名来存储姓氏
  • 显然没有理由实例化具有相同CCD_ 4的两个不同的CCD_

最新更新