Java - 为输入

时间:2017-10-10 11:38:23

标签: java user-input indexof

所以,我试图找到用户给出的输入中的特定字符。在这个问题中,用户使用格式

输入英国电话号码
  

(XXXX)XXX XXXX或(XXXXX)XXX XXX

其中区号由括号内的数字组成,个人电话号码由此后的数字组成。

到目前为止,我已尝试使用indexOf(String)方法在用户输入中查找结束括号,但未成功 - 这是我的代码:

import javax.swing.JOptionPane;

public class L2ExerciseE {
    public static void main(String[] args) {
        String number = JOptionPane.showInputDialog("Please input thy number: ");

        String areaCode = number.substring(1, indexOf(")"));
        String telephoneNumber = number.substring((indexOf(")") + 1), 15);
        System.out.println();

        System.out.println("The area code is: " + areaCode);
        System.out.println("The telephone number: " + telephoneNumber);
    }
}

我想这个问题正在发生,因为java使用编译器,而 Python ,我以前的语言,使用了解释器,即使我已经尝试过阅读其他答案,我&# 39;我很难理解他们。

如果不使用复杂的东西,我可以做些什么来使我的代码工作?目前,我们只看到了一些I / O命令,算术命令,基本级联以及其他一些命令,如.substring().indexOf().trim()

非常感谢你!

4 个答案:

答案 0 :(得分:4)

indexOf()不是一个独立的函数(Java中没有任何东西是独立的函数),它是String上的一个方法。您需要使用number.indexOf(")") - 您正在")"中寻找number

答案 1 :(得分:0)

请尝试以下操作。字符串类https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring(int)

的文档
C:\Program Files

答案 2 :(得分:0)

使用正则表达式:

String number = "(1234) 123 1234";
String pattern = "\\((\\d{4})\\) (\\d{3} \\d{4})|\\((\\d{5})\\) (\\d{3} \\d{3})";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(number);
if (m.find()) { 
    System.out.println("Found area code: " + m.group(1));
    System.out.println("Found personal number: " + m.group(2));
}

基于正则表达式的解决方案可能是这里的方法的原因是您的确切数字模式可能有一些变化。例如,具有多个空格的数字可能仍被视为有效,并且这很容易在正则表达式中表达。

Demo

答案 3 :(得分:0)

您的代码中有一个错误。试试这个:   String areaCode = number.substring(1,number.indexOf(“)”));   String telephoneNumber = number.substring((number.indexOf(“)”)+ 1),15);