当前位置: 首页 > 知识库问答 >
问题:

有没有办法接受单个字符作为输入?

宗冠宇
2023-03-14

编程新手,如果这是个愚蠢的问题,我深表歉意。

当使用Scanner类时,我看不出是否有获取单个字符作为输入的选项。例如

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语句使用.length()对其进行验证1,然后根据需要存储到字符中。

但是,有没有一种方法可以提取单个字符,而不是使用字符串然后进行验证?如果没有,有人能解释为什么这是不允许的吗?我认为这可能是由于类或对象与基本类型,但我不确定。

共有2个答案

傅皓君
2023-03-14

将分隔符设置为一个字符:

Scanner input = new Scanner(System.in).useDelimiter("(?<=.)");
String c = input.next(); // one char
和谦
2023-03-14

你可以使用系统。在里面read()而不是扫描仪

char input = (char) System.in.read();

您也可以使用Scanner,执行以下操作:

Scanner scanner = new Scanner(System.in);
char input = scanner.next().charAt(0);

对于使用String而不是char,我更喜欢转换为String,因为使用regex,就像在指定分隔符的答案中使用的一样,会使代码更难阅读:

Scanner scanner = new Scanner(System.in);
String input = String.valueOf(input.next().charAt(0));

这是少花哨比:

new Scanner(System.in).useDelimiter("(?<=.)");

但我想对于一个新手来说,我的任何提议都更容易理解。

 类似资料:
  • 问题内容: 我希望使用番石榴将其连接成一个字符串,但列表中的每个字符串周围都有环绕的字符串。所以我想列出一个字符串列表: 并生成此字符串: 我看到的示例似乎是生成3个以逗号分隔的名称,但我希望每个字符串都包含一些额外的字符串(每次都相同)。 我希望我在这里足够清楚。谢谢你的帮助。 问题答案: 为此,首先要进行转换:

  • 问题内容: 使用PMD,如果要忽略特定的警告,则可以使该行被忽略。 FindBugs有类似的东西吗? 问题答案: FindBugs的初始方法涉及XML配置文件(也称为过滤器)。这确实不如PMD解决方案方便,但是FindBugs只能在字节码上工作,而不能在源代码上工作,因此注释显然不是一个选择。例: 但是,为解决此问题,FindBugs稍后引入了另一个基于注释的解决方案(请参阅参考资料),您可以在类

  • 问题内容: 当然,在Java中。我正在编写程序并在Windows环境下运行它,但是我需要以Unix格式完成输出(.csv)。任何简单的解决方案?谢谢! 问题答案: 注意:如评论中所述,下面给出的方法在JDK 9+中是无效的。 使用James H.的答案中的方法。 “ Unix格式”是指使用“ \ n”作为行终止符而不是“ \ r \ n”吗?在创建PrintWriter之前,只需设置系统属性即可。

  • 如标题所示。我想我记得那是胶水作业生成单个csv输出文件而不是多个输出文件的某种选项,这是特定于某些胶水配置的,独立于任何apache火花相关功能。实现这一点需要对pyspark文件进行哪些设置更改?提前感谢日志

  • 对于阵列,我们可以使用: 有没有类似的方法可以在一个步骤中初始化列表?

  • 我想写这样的东西: 默认情况下,[process]方法不能这样做。我可以从文档中了解到,我需要一个特殊的模板解析器: 为了执行模板,将使用过程(String,IContext)方法:最终String结果=templateEngine.process("my模板",ctx);"my模板"String参数是模板名称,它将与模板的物理/逻辑位置相关以在模板解析器处配置自身的方式/s。 有人知道如何解决我