有没有办法接受单个字符作为输入?
Is there a way to accept a single character as an input?
编程新手,如果这是一个愚蠢的问题,我深表歉意。
使用扫描器class时,我没看到是否有获取单个字符作为输入的选项。例如,
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String a = input.nextLine();
}
}
上面的代码允许我将下一行拉入一个字符串,然后可以使用 while 或 if 语句使用 a.length() != 1 来验证它,然后在需要时存储到一个字符中.
但是有没有一种方法可以提取单个字符而不是使用字符串然后进行验证?如果不是,有人可以解释为什么不允许这样做吗?我认为这可能是由于 classes 或对象与原始类型有关,但我不确定。
您可以使用 System.in.read()
而不是 Scanner
char input = (char) System.in.read();
您也可以使用 Scanner
,执行如下操作:
Scanner scanner = new Scanner(System.in);
char input = scanner.next().charAt(0);
如果使用String
代替char,也可以转换为String
:
Scanner scanner = new Scanner(System.in);
String input = String.valueOf(input.next().charAt(0));
这不像其他方式那么花哨,但对于新手来说,它会更容易理解。另一方面,我认为提出的问题并不需要惊人的性能。
设置分隔符,使每个字符都是一个标记:
Scanner input = new Scanner(System.in).useDelimiter("(?<=.)");
String c = input.next(); // one char
正则表达式 (?<=.)
是后视,宽度为零,匹配每个字符。
编程新手,如果这是一个愚蠢的问题,我深表歉意。
使用扫描器class时,我没看到是否有获取单个字符作为输入的选项。例如,
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String a = input.nextLine();
}
}
上面的代码允许我将下一行拉入一个字符串,然后可以使用 while 或 if 语句使用 a.length() != 1 来验证它,然后在需要时存储到一个字符中.
但是有没有一种方法可以提取单个字符而不是使用字符串然后进行验证?如果不是,有人可以解释为什么不允许这样做吗?我认为这可能是由于 classes 或对象与原始类型有关,但我不确定。
您可以使用 System.in.read()
而不是 Scanner
char input = (char) System.in.read();
您也可以使用 Scanner
,执行如下操作:
Scanner scanner = new Scanner(System.in);
char input = scanner.next().charAt(0);
如果使用String
代替char,也可以转换为String
:
Scanner scanner = new Scanner(System.in);
String input = String.valueOf(input.next().charAt(0));
这不像其他方式那么花哨,但对于新手来说,它会更容易理解。另一方面,我认为提出的问题并不需要惊人的性能。
设置分隔符,使每个字符都是一个标记:
Scanner input = new Scanner(System.in).useDelimiter("(?<=.)");
String c = input.next(); // one char
正则表达式 (?<=.)
是后视,宽度为零,匹配每个字符。