在Java编程中,输入数据是非常重要的一部分,如果没有正确的输入数据,程序很难执行下去。本文将详细介绍Java输入数据的知识点整理,包括以下内容:
Java.util.Scanner
类System.console()
方法Scanner
类为读取用户输入提供了丰富的方法,具体用法如下:
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num = scanner.nextInt();
System.out.println("你输入的整数是:" + num);
System.out.println("请输入一个浮点数:");
double dec = scanner.nextDouble();
System.out.println("你输入的浮点数是:" + dec);
System.out.println("请输入一个字符串:");
String str = scanner.nextLine();
System.out.println("你输入的字符串是:" + str);
scanner.close();
}
}
以上代码演示了如何读取整数、浮点数和字符串。需要注意的是,用nextLine()
方法读取字符串时,它会读取剩下的全部内容,直到遇到回车为止。可以使用next()
方法代替nextLine()
方法,读取到第一个空格或回车为止。
Java程序默认会有两个标准流:System.in
和System.out
。其中,System.in
代表标准输入流,它的类型是InputStream
,可以读取用户从键盘输入的内容。System.out
代表标准输出流,它的类型是PrintStream
,可以将内容输出到控制台。实际上,System.out
也可以通过重定向输出到文件等。
以下是一个使用标准输入流读取用户输入的示例代码:
import java.io.InputStream;
import java.util.Scanner;
public class StdinTest {
public static void main(String[] args) {
System.out.println("请输入一个整数:");
InputStream in = System.in;
Scanner scanner = new Scanner(in);
int num = scanner.nextInt();
System.out.println("你输入的整数是:" + num);
scanner.close();
}
}
System.console()
方法可以用于与控制台进行交互,用法如下所示:
import java.io.Console;
public class ConsoleTest {
public static void main(String[] args) {
Console console = System.console();
if (console == null) {
System.err.println("未找到控制台");
System.exit(1);
}
console.printf("请输入用户名:");
String username = console.readLine();
console.printf("请输入密码:");
char[] password = console.readPassword();
console.printf("你的用户名是:%s,你的密码是:%s%n", username, new String(password));
}
}
以上代码演示了如何使用System.console()
方法读取用户名和密码,并将其输出到控制台。
以下是一个示例,演示如何使用Scanner
类读取多个数据并计算其平均值:
import java.util.Scanner;
public class CalculateAverage {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入多个整数,每个整数之间用空格分隔:");
int sum = 0, count = 0;
while (scanner.hasNextInt()) {
int num = scanner.nextInt();
sum += num;
count++;
}
scanner.close();
if (count == 0) {
System.err.println("未输入任何数据");
return;
}
double average = (double)sum / count;
System.out.printf("平均值为:%.2f%n", average);
}
}
以上代码演示了如何使用hasNextInt()
方法来判断是否还有输入数据,并使用nextInt()
方法读取输入数据。最后,计算平均值并将其输出到控制台。
另外,如果要读取非空格分隔的多个数据,可以使用Scanner
类的useDelimiter()
方法设置分隔符。例如:
Scanner scanner = new Scanner(System.in).useDelimiter(",");
while (scanner.hasNextInt()) {
int num = scanner.nextInt();
// ...
}
以上代码将使用逗号作为分隔符读取输入数据。