Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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中的Scanner类从控制台读取输入?_Java_Java.util.scanner - Fatal编程技术网

如何使用Java中的Scanner类从控制台读取输入?

如何使用Java中的Scanner类从控制台读取输入?,java,java.util.scanner,Java,Java.util.scanner,如何使用扫描仪类从控制台读取输入?大概是这样的: System.out.println("Enter your username: "); Scanner = input(); // Or something like this, I don't know the code 基本上,我只想让扫描器读取用户名的输入,并将输入分配给字符串变量。一个简单的例子来说明java.util.scanner的工作原理,就是从系统中读取一个整数。这真的很简单 Scanner scan = new Scanne

如何使用
扫描仪
类从控制台读取输入?大概是这样的:

System.out.println("Enter your username: ");
Scanner = input(); // Or something like this, I don't know the code

基本上,我只想让扫描器读取用户名的输入,并将输入分配给
字符串
变量。

一个简单的例子来说明
java.util.scanner
的工作原理,就是从
系统中读取一个整数。这真的很简单

Scanner scan = new Scanner(System.in);
String myLine = scan.nextLine();
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
要检索我可能会使用的用户名

如果希望对输入进行更多控制,或者只验证
username
变量,也可以使用

Scanner scan = new Scanner(System.in);
String myLine = scan.nextLine();

当用户输入他/她的
用户名时,您将在中找到有关其实现的更多信息,同时检查有效输入

java.util.Scanner input = new java.util.Scanner(System.in);
String userName;
final int validLength = 6; // This is the valid length of an user name

System.out.print("Please enter the username: ");
userName = input.nextLine();

while(userName.length() < validLength) {

    // If the user enters less than validLength characters
    // ask for entering again
    System.out.println(
        "\nUsername needs to be " + validLength + " character long");

    System.out.print("\nPlease enter the username again: ");
    userName = input.nextLine();
}

System.out.println("Username is: " + userName);
java.util.Scanner输入=新的java.util.Scanner(System.in);
字符串用户名;
最终整数有效长度=6;//这是用户名的有效长度
System.out.print(“请输入用户名:”);
userName=input.nextLine();
while(userName.length()
一个简单的例子:

import java.util.Scanner;

public class Example
{
    public static void main(String[] args)
    {
        int number1, number2, sum;

        Scanner input = new Scanner(System.in);

        System.out.println("Enter First multiple");
        number1 = input.nextInt();

        System.out.println("Enter second multiple");
        number2 = input.nextInt();

        sum = number1 * number2;

        System.out.printf("The product of both number is %d", sum);
    }
}

您可以制作一个简单的程序来询问用户的姓名,并打印回复使用的任何输入

或者让用户输入两个数字,你可以加、乘、减或除这些数字,然后打印用户输入的答案,就像计算器一样

因此,您需要Scanner类。您必须
导入java.util.Scanner,并且在需要使用的代码中:

Scanner input = new Scanner(System.in);
input
是一个变量名

Scanner input = new Scanner(System.in);

System.out.println("Please enter your name: ");
s = input.next(); // Getting a String value

System.out.println("Please enter your age: ");
i = input.nextInt(); // Getting an integer

System.out.println("Please enter your salary: ");
d = input.nextDouble(); // Getting a double
看看这有什么不同:
input.next()
i=input.nextInt()
d=input.nextDouble()


根据字符串,int和double的变化方式与其他字符串相同。不要忘记代码顶部的import语句。

下面是执行所需操作的完整类:

import java.util.*;

class Ss
{
    int id, salary;
    String name;

   void Ss(int id, int salary, String name)
    {
        this.id = id;
        this.salary = salary;
        this.name = name;
    }

    void display()
    {
        System.out.println("The id of employee:" + id);
        System.out.println("The name of employye:" + name);
        System.out.println("The salary of employee:" + salary);
    }
}

class employee
{
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);

        Ss s = new Ss(sc.nextInt(), sc.nextInt(), sc.nextLine());
        s.display();
    }
}
import java.util.Scanner;

public class App {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        final int valid = 6;

        Scanner one = new Scanner(System.in);
        System.out.println("Enter your username: ");
        String s = one.nextLine();

        if (s.length() < valid) {
            System.out.println("Enter a valid username");
            System.out.println(
                "User name must contain " + valid + " characters");
            System.out.println("Enter again: ");
            s = one.nextLine();
        }

        System.out.println("Username accepted: " + s);

        Scanner two = new Scanner(System.in);
        System.out.println("Enter your age: ");
        int a = two.nextInt();
        System.out.println("Age accepted: " + a);

        Scanner three = new Scanner(System.in);
        System.out.println("Enter your sex: ");
        String sex = three.nextLine();
        System.out.println("Sex accepted: " + sex);
    }
}
import java.util.Scanner;
公共类应用程序{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
最终有效整数=6;
扫描仪1=新扫描仪(System.in);
System.out.println(“输入您的用户名:”);
字符串s=1.nextLine();
如果(s.length()<有效){
System.out.println(“输入有效用户名”);
System.out.println(
“用户名必须包含“+有效+”字符”);
System.out.println(“再次输入:”;
s=1.nextLine();
}
System.out.println(“接受的用户名:+s”);
扫描器2=新扫描器(System.in);
System.out.println(“输入您的年龄:”;
int a=two.nextInt();
System.out.println(“接受的年龄:+a”);
扫描仪三=新扫描仪(System.in);
System.out.println(“输入您的性别:”;
字符串sex=3.nextLine();
System.out.println(“接受性别:+Sex”);
}
}
  • 要读取输入:

    Scanner scanner = new Scanner(System.in);
    String input = scanner.nextLine();
    
  • 要在调用带有某些参数/参数的方法时读取输入,请执行以下操作:

    if (args.length != 2) {
        System.err.println("Utilizare: java Grep <fisier> <cuvant>");
        System.exit(1);
    }
    try {
        grep(args[0], args[1]);
    } catch (IOException e) {
        System.out.println(e.getMessage());
    }
    
    if(args.length!=2){
    System.err.println(“Utilizare:javagrep”);
    系统出口(1);
    }
    试一试{
    grep(args[0],args[1]);
    }捕获(IOE异常){
    System.out.println(e.getMessage());
    }
    

  • 从控制台读取数据

    String name = null;
    int number;
    
    java.io.BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    name = in.readLine(); // If the user has not entered anything, assume the default value.
    number = Integer.parseInt(in.readLine()); // It reads only String,and we need to parse it.
    System.out.println("Name " + name + "\t number " + number);
    
    java.util.Scanner sc = new Scanner(System.in).useDelimiter("\\s");
    name = sc.next();  // It will not leave until the user enters data.
    number = sc.nextInt(); // We can read specific data.
    System.out.println("Name " + name + "\t number " + number);
    
    // The Console class is not working in the IDE as expected.
    java.io.Console cnsl = System.console();
    if (cnsl != null) {
        // Read a line from the user input. The cursor blinks after the specified input.
        name = cnsl.readLine("Name: ");
        System.out.println("Name entered: " + name);
    }
    
    • 是同步的,因此可以从多个线程安全地完成BufferedReader上的读取操作。可以指定缓冲区大小,也可以使用默认大小()。对于大多数情况,默认值足够大

      «只需从流或源中逐行读取数据。一行被认为是由下列任一行终止:\n\r(或)\r\n

    • 使用定界符模式将其输入拆分为标记,默认情况下,定界符模式与空白(\s)匹配,并由识别

      «在用户输入数据之前,扫描操作可能会阻塞,等待输入。 «如果要分析流中特定类型的令牌,请使用Scanner()。 «但是,扫描仪不是线程安全的。它必须在外部同步

      next()«查找并返回来自此扫描仪的下一个完整令牌。 nextInt()«将输入的下一个标记扫描为int

    代码

    String name = null;
    int number;
    
    java.io.BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    name = in.readLine(); // If the user has not entered anything, assume the default value.
    number = Integer.parseInt(in.readLine()); // It reads only String,and we need to parse it.
    System.out.println("Name " + name + "\t number " + number);
    
    java.util.Scanner sc = new Scanner(System.in).useDelimiter("\\s");
    name = sc.next();  // It will not leave until the user enters data.
    number = sc.nextInt(); // We can read specific data.
    System.out.println("Name " + name + "\t number " + number);
    
    // The Console class is not working in the IDE as expected.
    java.io.Console cnsl = System.console();
    if (cnsl != null) {
        // Read a line from the user input. The cursor blinks after the specified input.
        name = cnsl.readLine("Name: ");
        System.out.println("Name entered: " + name);
    }
    
    流的输入和输出
    有几种方法可以从用户那里获取输入。在本程序中,我们将采用Scanner类来实现该任务。这个Scanner类属于
    java.util
    ,因此程序的第一行是import java.util.Scanner允许用户读取Java中各种类型的值。import语句行必须位于java程序的第一行,我们继续编写代码

    in.nextInt(); // It just reads the numbers
    
    in.nextLine(); // It get the String which user enters
    
    要访问Scanner类中的方法,请将新的Scanner对象创建为“in”。现在我们使用它的一种方法,即“下一步”。“next”方法获取用户在键盘上输入的文本字符串

    这里我在.nextLine()中使用
    获取用户输入的字符串

    import java.util.Scanner;
    
    class GetInputFromUser {
        public static void main(String args[]) {
            int a;
            float b;
            String s;
    
            Scanner in = new Scanner(System.in);
            System.out.println("Enter a string");
            s = in.nextLine();
            System.out.println("You entered string " + s);
    
            System.out.println("Enter an integer");
            a = in.nextInt();
            System.out.println("You entered integer " + a);
    
            System.out.println("Enter a float");
            b = in.nextFloat();
            System.out.println("You entered float " + b);
        }
    }
    

    您可以在Java中使用Scanner类

    Scanner scan = new Scanner(System.in);
    String s = scan.nextLine();
    System.out.println("String: " + s);
    

    有一种从控制台读取的简单方法

    请查找以下代码:

    import java.util.Scanner;
    
        public class ScannerDemo {
    
            public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
    
                // Reading of Integer
                int number = sc.nextInt();
    
                // Reading of String
                String str = sc.next();
            }
        }
    
    有关详细了解,请参阅以下文件

    现在,让我们详细了解Scanner类的工作原理:

    public Scanner(InputStream source) {
        this(new InputStreamReader(source), WHITESPACE_PATTERN);
    }
    
    这是用于创建扫描程序实例的构造函数

    这里我们传递的是
    InputStream
    引用,它只不过是一个
    系统。在这里,它打开控制台输入的
    InputStream
    管道

    public InputStreamReader(InputStream in) {
        super(in);
        try {
            sd = StreamDecoder.forInputStreamReader(in, this, (String)null); // ## Check lock object
        }
        catch (UnsupportedEncodingException e) {
            // The default encoding should always be available
            throw new Error(e);
        }
    }
    
    通过系统
    public InputStreamReader(InputStream in) {
        super(in);
        try {
            sd = StreamDecoder.forInputStreamReader(in, this, (String)null); // ## Check lock object
        }
        catch (UnsupportedEncodingException e) {
            // The default encoding should always be available
            throw new Error(e);
        }
    }
    
    Scanner obj= new Scanner(System.in);
    String s = obj.nextLine();
    
     System.out.print("Insert a number: ");
     int number = input.nextInt();
     input.nextLine(); // This line you have to add (it consumes the \n character)
     System.out.print("Text1: ");
     String text1 = input.nextLine();
     System.out.print("Text2: ");
     String text2 = input.nextLine();