【问题标题】:Try and Catch statement for wordsTry and Catch 语句
【发布时间】:2014-10-20 20:03:04
【问题描述】:

如果有人输入单词以外的内容,我想使用 try and catch 语句。以我之前的经验,如果没有错误,是很难用的。如果有人输入一个数字,例如他们的名字,他们就没有错误。无论如何我可以使用 try and catch 语句吗?

try {
    String firstName, middleInitial, lastName, Firstname;
    char firstNameCase, middleInitialCase, lastNameCase;

    firstName = firstNameInput.getText();
    middleInitial = middleInitialInput.getText();
    lastName = lastNameInput.getText();

    char firstNameLetter = firstName.charAt(0);
    firstNameCase = Character.toLowerCase(firstNameLetter);

    char lastNameLetter = lastName.charAt(0);
    lastNameCase = Character.toUpperCase(lastNameLetter);

    char middleInitialLetter = middleInitial.charAt(0);
    middleInitialCase = Character.toLowerCase(middleInitialLetter);

    String firstNameFinal = Character.toString(firstNameCase);
    String lastNameFinal = Character.toString(lastNameCase);
    String middleInitialFinal = Character.toString(middleInitialCase);

    String monogram = firstNameFinal+lastNameFinal + middleInitialFinal;

    monogramOutput.setText("Your monogram is: " + monogram); 
} catch(I dont know what to put here) {
    JOptionPane.showMessageDialog(mainPanel, "One or more fields contains invalid data","Error Dialog", JOptionPane.ERROR_MESSAGE);
}

【问题讨论】:

  • 你可以明确检查它是否是一个数字,但你怎么知道它是否是一个“单词”。
  • 好吧,鉴于名称一个词,很难检查。你想要的实际上是非常复杂的。 Lexographic 分析有点超出您目前编码的范围。
  • 我认为这对他来说并不重要。他只想要数字
  • 尝试将返回解析为 Double 并捕获 NumberFormatException。
  • 您可以在检查输入是否为数字后抛出异常。

标签: java exception try-catch


【解决方案1】:

您有什么特别的原因要使用 Try/Catch 方法吗?

我的意思是下面的代码应该对你的请求做任何事情:

Object helloworld = "";

if( helloworld instanceof String ) {
  // do something String related to helloworld
}

当然,如果您坚持使用 try/catch。

试试看:

catch (Exception ex)

【讨论】:

    【解决方案2】:

    如果我理解您的问题,您可以使用 Pattern 和不匹配数字的正则表达式 \\D+

    String strFail = "cc1";
    String strPass = "abc";
    Pattern p = Pattern.compile("\\D+");
    System.out.println(strFail + ": " + p.matcher(strFail).matches());
    System.out.println(strPass + ": " + p.matcher(strPass).matches());
    

    输出是

    cc1: false
    abc: true
    

    【讨论】:

    • \\D+ 是什么意思?
    • \\d 表示一个数字。 \\D 表示不是一个数字。在这种情况下,数字是字符0-9+ 表示一个和多个。因此,匹配所有内容而不是数字。另外,这个问题已经快八年了。
    猜你喜欢
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多