当前位置: 首页 > news >正文

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 而不是 printlnSystem.out.println("请输入第二个字符串:");String line2 = sc.nextLine();System.out.println(line2);}
}

执行结果:

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

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

http://www.lryc.cn/news/366536.html

相关文章:

  • vue3实现录音与录像上传功能
  • PHP小方法
  • gulimall-search P125 springboot整合elasticsearch版本冲突
  • 如何在Coze中实现Bot对工作流的精准调用(如何提高Coze工作流调用的准确性和成功率)
  • 毫米波雷达阵列天线设计综合1(MATLAB仿真)
  • Freemarker
  • 基于Zero-shot实现LLM信息抽取
  • 【python】tkinter GUI编程经典用法,Label标签组件应用实战详解
  • 国产操作系统上给麒麟虚拟机安装virtualbox增强工具 _ 统信 _ 麒麟 _ 中科方德
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第3节(特定类约束)
  • 【postgresql初级使用】视图上的触发器instead of,替代计划的rewrite,实现不一样的审计日志
  • window.setInterval(func,interval)定时器
  • Einstein Summation 爱因斯坦求和 torch.einsum
  • TCP攻击是怎么实现的,如何防御?
  • Chrome DevTools开发者调试工具
  • 产品创新管理:从模仿到引领,中国企业的创新之路
  • Android 日志实时输出
  • JavaEE初阶---多线程编程(一.线程与进程)
  • react+vite创建
  • 软考 系统架构设计师系列知识点之杂项集萃(29)
  • [Qt开发]当我们在开发兼容高分辨率和高缩放比、高DPI屏幕的软件时,我们在谈论什么。
  • uniapp视频组件层级太高,解决方法使用subNvue原生子体窗口
  • java项目使用jsch下载ftp文件
  • 指针(初阶1)
  • MySQL实体类框架
  • 数据结构之初始泛型
  • 【网络编程开发】7.TCP可靠传输的原理
  • 视觉SLAM十四讲:从理论到实践(Chapter8:视觉里程计2)
  • C语言过度C++语法补充(面向对象之前语法)
  • 类和对象(二)(C++)