Java—使用indexOf方法进行输入

Java—使用indexOf方法进行输入,java,user-input,indexof,Java,User Input,Indexof,因此,我试图在用户提供的输入中找到一个特定字符。在这个问题中,用户使用以下格式输入一个英国电话号码 (XXXX)XXXX或(XXXXX)XXX XXX 其中,区号由括号内的数字组成,个人电话号码由括号后的数字组成 迄今为止,我尝试使用indexOf(String)方法在用户输入中查找结束括号,但没有成功,这是我的代码: import javax.swing.JOptionPane; public class L2ExerciseE { public static void main(S

因此,我试图在用户提供的输入中找到一个特定字符。在这个问题中,用户使用以下格式输入一个英国电话号码

(XXXX)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使用了解释器,尽管我尝试过阅读其他答案,但我在理解它们时遇到了严重的困难

我该怎么做才能使代码正常工作而不会使事情过于复杂?目前,我们只看到了一些I/O命令、算术命令、基本连接,以及一些其他命令,如
.substring()
.indexOf()
.trim()


提前非常感谢

indexOf()
不是一个独立函数(Java中没有任何东西是独立函数),它是一个
字符串上的方法。您需要使用
number.indexOf(“)”
-您正在
number
中查找
indexOf()
不是一个独立函数(Java中没有任何东西是独立函数),它是一个
字符串上的方法。您需要使用
number.indexOf(“)”
-您正在
number
中查找
,请尝试以下操作。字符串类的文档


试试下面。字符串类的文档

使用正则表达式模式:

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));
}
基于正则表达式的解决方案可能是解决这个问题的方法,原因是您的精确数字模式可能有一些变化。例如,具有多个空格的数字可能仍然被认为是有效的,这很容易在正则表达式中表达

使用正则表达式模式:

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));
}
基于正则表达式的解决方案可能是解决这个问题的方法,原因是您的精确数字模式可能有一些变化。例如,具有多个空格的数字可能仍然被认为是有效的,这很容易在正则表达式中表达


您的代码中有一个错误。试试这个: 字符串areaCode=number.substring(1,number.indexOf(“)”);
字符串电话号码=number.substring((number.indexOf(“)”)+1),15

您的代码中有一个错误。试试这个: 字符串areaCode=number.substring(1,number.indexOf(“)”); 字符串电话号码=number.substring((number.indexOf(“)”)+1),15