Scanner

Java 有一个 Scanner 类,用这个类可以接受键盘输入。

步骤:

  1. 导入该类所在的包(要使用一个类的话就必须先导入该类所在的包)
  2. 创建该类的对象
  3. 调用里面的功能

Scanner 有两套系统。

第一套系统:

nextInt();
nextDouble();
next();
// 等等...

第二套系统:

nextLine();  // 接收一个字符串

程序示例:

import java.util.Scanner;

public class Input {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // 只有 sc 是变量名,只有 sc 可以改变,其他的都不允许改变。
        System.out.print("请输入一个用户的名字: ");
        String name = sc.next(); // 接收一个字符串
        System.out.print("请输入用户的年龄: ");
        int age = sc.nextInt(); // 接收一个整数
        System.out.print("请输入用户的薪水: ");
        double salary = sc.nextDouble(); // 接收一个double数据
        System.out.println("用户信息如下:");
        System.out.println("姓名: " + name);
        System.out.println("年龄: " + age);
        System.out.println("薪水: " + salary);
    }
}

执行结果:

请输入一个用户的名字: 小章
请输入用户的年龄: 20
请输入用户的薪水: 20000
用户信息如下:
姓名: 小章
年龄: 20
薪水: 20000.0

第一套系统,遇到空白停止接收,剩余输入存在于缓冲中,等待下一次读入。

程序示例:

import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("enter some words: ");
        String s = sc.next();
        System.out.println(s);
    }
}

执行结果:

enter some words: xiao cheng
xiao

程序示例:

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个整数:");
        int num1 = sc.nextInt();
        System.out.println(num1);
        System.out.println("请输入第二个整数:");
        int num2 = sc.nextInt();
        System.out.println(num2);
    }
}

执行结果:

请输入第一个整数:
123 456
123
请输入第二个整数:
456

练习:

import java.util.Scanner;

public class Input {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a, b;
        System.out.print("输入一个整数:");
        a = sc.nextInt();
        System.out.print("输入另一个整数:");
        b = sc.nextInt();
        System.out.println("两个整数的和为 " + (a + b));
    }
}

执行结果:

输入一个整数:198 
输入另一个整数:876
两个整数的和为 1074

第二套系统,可以接收一整行输入,直到遇到回车才停止接收数据。

程序示例:

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个字符串:");
        String line1 = sc.nextLine();
        System.out.println(line1);
        System.out.println("请输入第二个字符串:");
        String line2 = sc.nextLine();
        System.out.println(line2);
    }
}

执行结果:

请输入第一个字符串:
hello     world
hello     world
请输入第二个字符串:
早    上     好
早    上     好

两套系统混着用的一个弊端:

import java.util.Scanner;

public class test2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num1 = sc.nextInt();
        System.out.println(num1);
        System.out.println("请输入一个字符串:");
        String line1 = sc.nextLine();
        System.out.println(line1);
        System.out.println("结束");
    }
}

执行结果 1:

请输入一个数字:
123
123
请输入一个字符串:

结束

line1 读取到了一个换行符,但是不会将换行符存储进去,所以 line1 是空的,因此此处的 System.out.println(line1); 相当于 System.out.println("");,也相当于 System.out.println();。因此仅仅只打印了一个换行。

执行结果 2:

请输入一个数字:
123     456
123
请输入一个字符串:
     456
结束

程序示例:

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个字符串:");
        String line1 = sc.nextLine();
        System.out.print(line1);  // 是 print 而不是 println
        System.out.println("请输入第二个字符串:");
        String line2 = sc.nextLine();
        System.out.println(line2);
    }
}

执行结果:

请输入第一个字符串:
hello   world
hello   world请输入第二个字符串:
   你    好
   你    好

nextLine() 不会把换行符存储在字符串中。nextLine() 可以将换行符从缓冲区中读取走且不放到字符串中,这样换行符既不在缓冲区,也不在换行符中,相当于丢弃了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值