scanner 获取控制台信息_关于java.util.scanner:如何使用Java中的Scanner类从控制台读取输入?...
如何使用Scanner类从控制台读取输入? 像这样:
System.out.println("Enter your username:");
Scanner = input(); // Or something like this, I don't know the code
基本上,我只需要让扫描程序读取用户名的输入,然后将输入分配给String变量。
在此处查看> Java程序以使用扫描仪类从用户那里获取输入
好的代码示例:codeflex.co/java-scanner-example-read-from-console
一个简单的示例说明java.util.Scanner的工作方式是从System.in读取单个整数。这真的很简单。
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
要检索用户名,我可能会使用sc.nextLine()。
System.out.println("Enter your username:");
Scanner scanner = new Scanner(System.in);
String username = scanner.nextLine();
System.out.println("Your username is" + username);
如果要对输入进行更多控制,也可以使用next(String pattern),或者仅验证username变量。
您可以在java.util.Scanner的API文档中找到有关其实现的更多信息。
可以说我只使用一次扫描器,并且不想通过初始化然后关闭扫描器来弄乱我的代码-有没有办法在不构造类的情况下从用户那里获取输入?
您可以在JDK 8中使用try with resource语句,例如;试试(扫描仪扫描仪=新扫描仪(System.in)){}
Scanner scan = new Scanner(System.in);
String myLine = scan.nextLine();
从控制台读取数据
BufferedReader是同步的,因此可以从多个线程安全地对BufferedReader进行读取操作。可以指定缓冲区大小,也可以使用默认大小(8192)。对于大多数用途,默认值足够大。
readLine()吗?只是从流或源中逐行读取数据。一条线被以下任一端接: n, r(或) r n
Scanner使用定界符模式将其输入分为令牌,默认情况下,该定界符与空格匹配,并由Character.isWhitespace识别。
?在用户输入数据之前,扫描操作可能会阻塞,等待输入。
?如果要从流中解析特定类型的令牌,请使用Scanner(BUFFER_SIZE = 1024)。
?但是,扫描仪不是线程安全的。它必须在外部同步。
下一个() ?查找并返回此扫描仪的下一个完整令牌。
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);
}
流的输入和输出
Reader Input: Output:
Yash 777 Line1 = Yash 777
7 Line1 = 7
Scanner Input: Output:
Yash 777 token1 = Yash
token2 = 777
与原来的一个imo相比,现在这是一个更好,最新的答案。
有关更多信息,请参见:BufferedReader, Scanner从本地文件(OR)网络文件读取数据。
input.nextInt()方法存在问题-它仅读取int值。
因此,当使用input.nextLine()读取下一行时,您会收到" n",即Enter键。 因此,要跳过此步骤,您必须添加input.nextLine()。
像这样尝试:
System.out.print("Insert a number:");
int number = input.nextInt();
input.nextLine(); // This line you have to add (it consumes the
character)
System.out.print("Text1:");
String text1 = input.nextLine();
System.out.print("Text2:");
String text2 = input.nextLine();
这不提供新信息
有几种方法可以从用户那里获取输入。在此程序中,我们将使用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类中的方法,请创建一个新的扫描仪对象为" in"。现在,我们使用其方法之一,即" next"。"下一个"方法获取用户在键盘上输入的文本字符串。
在这里,我使用in.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);
}
}
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] arguments){
Scanner input = new Scanner(System.in);
String username;
double age;
String gender;
String marital_status;
int telephone_number;
// Allows a person to enter his/her name
Scanner one = new Scanner(System.in);
System.out.println("Enter Name:" );
username = one.next();
System.out.println("Name accepted" + username);
// Allows a person to enter his/her age
Scanner two = new Scanner(System.in);
System.out.println("Enter Age:" );
age = two.nextDouble();
System.out.println("Age accepted" + age);
// Allows a person to enter his/her gender
Scanner three = new Scanner(System.in);
System.out.println("Enter Gender:" );
gender = three.next();
System.out.println("Gender accepted" + gender);
// Allows a person to enter his/her marital status
Scanner four = new Scanner(System.in);
System.out.println("Enter Marital status:" );
marital_status = four.next();
System.out.println("Marital status accepted" + marital_status);
// Allows a person to enter his/her telephone number
Scanner five = new Scanner(System.in);
System.out.println("Enter Telephone number:" );
telephone_number = five.nextInt();
System.out.println("Telephone number accepted" + telephone_number);
}
}
每次创建新的扫描仪是否有任何特殊原因,还是只是复制+粘贴而不了解其工作原理?
@EvgeniSergeev new Scanner是您创建的用于获取用户输入的对象。阅读有关Scanner类的更多信息...
绝对复制粘贴。不需要每次都使用新的扫描器(这也不遵循Java变量命名约定)。
您可以编写一个简单的程序来询问用户名,并打印任何使用输入的答复。
或者要求用户输入两个数字,您可以对这些数字进行加,乘,减或除运算,并像计算器的行为一样打印用户输入的答案。
因此,您需要Scanner类。您必须import 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();
根据String的说法,int和double会以相同的方式改变其余部分。不要忘记代码顶部的import语句。
这实际上是一个正确的解释,但是如果您向其中添加更多方法,如nextLine(),nextLong()等,可能会更好。
学生必须遵循示例并测试其余方法,然后自己学习,这就是我认为有经验的学习。
一个简单的例子:
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);
}
}
当用户输入他的/她的username时,还要检查输入是否有效。
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(
"
Username needs to be" + validLength +" character long");
System.out.print("
Please enter the username again:");
userName = input.nextLine();
}
System.out.println("Username is:" + userName);
读取输入:
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
在调用带有某些参数/参数的方法时读取输入:
if (args.length != 2) {
System.err.println("Utilizare: java Grep ");
System.exit(1);
}
try {
grep(args[0], args[1]);
} catch (IOException e) {
System.out.println(e.getMessage());
}
您应该阅读有关格式化文本/代码的帮助页面:stackoverflow.com/help/formatting。
您可能要翻译(从法语?)。
@PeterMortensen,来自罗马尼亚。
这是执行所需操作的完整类:
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);
}
}
没有理由使用Scanner的多个实例。
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();
}
}
您可以传递以下代码:
Scanner obj= new Scanner(System.in);
String s = obj.nextLine();
由于缺少解释,因此它不提供新信息,甚至不如现有答案有用。
"流此代码"是什么意思?您的意思是"遵循此代码"吗?或者是其他东西?
有一种从控制台读取的简单方法。
请找到以下代码:
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);
}
这是用于创建Scanner实例的构造函数。
在这里,我们传递了InputStream引用,该引用不过是System.in。在这里,它打开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);
}
}
通过传递System.in,此代码将打开套接字以从控制台读取。
您可以在Java中使用Scanner类
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
System.out.println("String:" + s);
scanner 获取控制台信息_关于java.util.scanner:如何使用Java中的Scanner类从控制台读取输入?...相关推荐
- 【ruoyi】java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.ScheduledThreadPoo
前言 ruoyi 4.6.0 jdk1.8 错误 11:48:16.879 [http-nio-9031-exec-25] INFO c.r.f.s.r.UserRealm - [doGetAuthe ...
- java sql date 时分秒_java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间...
java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Da ...
- Scala error: type mismatch; found : java.util.List[?0] required: java.util.List[B]
Scala error: type mismatch; found : java.util.List[?0] required: java.util.List[B] 目录 Scala error: t ...
- 带有Java Util日志记录的Java 8延迟调用
在博客文章"在Log4j2中更好地执行非日志记录器调用"中 ,我介绍了可以在Log4j 2中使用的方法,这些方法可以减少或避免在基于指定日志级别实际上根本未记录的日志语句中调用方法 ...
- java.util.Date转换成java.sql.Date
// 获取当前的系统时间,以java.util.Date对象返回 Date dateUtil = new Date(); // 获取当前的系统时间,以时间戳返回 long l = System.cur ...
- mybatis中传集合时 报异常 invalid comparison: java.util.Arrays$ArrayList and java.lang.String
mybatis中传集合时 报异常 invalid comparison: java.util.Arrays$ArrayList and java.lang.String 参考文章: (1)mybati ...
- java.util.date转化成java.sql.date
2019独角兽企业重金招聘Python工程师标准>>> java.util.Date curDate = new java.util.Date(); java.sql.Date da ...
- CompletableFuture源码详解之java.util.concurrent.CompletableFuture#runAsync(java.lang.Runnable)
CompletableFuture#runAsync方法是用来执行无返回结果的异步程序,当执行一大堆业务逻辑代码,而又不需要返回结果的时候,可以使用此方法异步执行,提升接口性能,方法源码如下: /** ...
- 使用java.util.prefs.Preferences代替java.util.Properties
典型的应用程序安装程序需要向用户询问几个选项,其中一些是配置问题,例如,应用程序应在其上运行的端口,应如何运行等.应用程序必须记住这些选项,并在每个选项中使用它们.跑. 解决此问题的标准方法是将这些选 ...
最新文章
- http://www.shanghaihaocong.com-WORDPRESS开发的企业主题站
- 【错误记录】Android Studio 向 GitHub 提交代码报错 ( Push failed: Failed with error: Could not read from remote )
- Protocol Buffer搭建及示例
- 信息系统项目管理师:第1章:信息化与信息系统-重点汇总
- SringBoot+Redis整合
- 每天一道LeetCode-----计算直方图中最大矩形的面积
- MappedByteBuffer以及ByteBufer的底层原理
- exit(),_exit()的区别
- BZOJ 4753 二分+树形DP
- 手把手教你用python实现决策树的策略规则挖掘
- 遭遇 XSS 跨站脚本攻击?稳住,这些方法可保你渡劫 | 附代码、图解
- markdown首行空两格
- 基于Java的webapp_第一个 JAVA WEB 应用
- Springboot整合七牛云上传图片
- animator 控制移动_Unity UGUI通过摇杆控制角色移动
- 用excel表格解线性方程组
- 强烈推荐一个上网以来见过的最好的学习资料网站,全部免费!
- AVR单片机LED单灯闪烁
- unity ToggleGroup和Toggle.isOn的坑
- JPEG and MPEG
热门文章
- .NET Core 开源工具 IPTools - 快速查询 IP 地理位置、经纬度信息
- M1 Mac Ps2022如何不转译使用拓展插件
- Android--ImageView读取本地路径图片
- zemax场曲畸变图_zemax初学入门像差分析各种图像(上)
- 阿根廷世界杯夺冠,跨境卖家如何借势营销?
- ROS系统中编写多个C++文件时,主文件调用其它文件函数或类时出现:对“xxxxxx“未定义的引用问题记录
- 基于正交设计的折射反向学习樽海鞘群算法
- Ajax发送的put请求过程
- 免费自媒体全网平台爆文采集器
- Kernel panic - not syncing VFS Unable to mount root fs on