当前位置: 首页 > 面试题库 >

charAt()。equals()导致“无法取消引用char”

秦珂
2023-03-14
问题内容

我正在尝试检查字符串在不同位置处的连字符(对于电话号码,因为输入有所不同),但是我一直收到错误消息

不能取消引用char

码:

do {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Enter String");
    String raw = br.readLine();

    if (raw.length() < 10) {
        System.out.println("");
        System.out.println("Please input a valid phone number of at least 10 digits/letters");
        System.out.println("");
    } else {
        if (raw.charAt(3).equals('-') && raw.charAt(7).equals('-')) {
            System.out.println("2 Hyphens at 3 and 7");
        } else if (raw.charAt(3).equals('-')
                && raw.charAt(8).equals('-')) {
            System.out.println("2 Hyphens at 3 and 8");
        } else if (raw.charAt(3).equals('-')
                && raw.charAt(9).equals('-')) {
            System.out.println("2 Hyphens at 3 and 9");
        }
    }
} while (1 < 2);

问题答案:

如果您使用类似的方法,它将起作用:

  if (raw.charAt(3) == '-' && raw.charAt(7) == '-') {

      System.out.println("2 Hyphens at 3 and 7");

  } else if (raw.charAt(3) == '-' && raw.charAt(8) == '-') {

      System.out.println("2 Hyphens at 3 and 8");

  } else if (raw.charAt(3) == '-' && raw.charAt(9) == '-') {

      System.out.println("2 Hyphens at 3 and 9");

  }

问题是raw.charAt(n)返回a char而不是a
String。该equals()方法只能用于对象。Char是没有方法的原始数据类型。在char上,您应该使用==或运算符!=



 类似资料:
  • 问题内容: 我是Java的新手,正在使用BlueJ。尝试编译时,我不断收到此“无法取消引用Int”错误,但我不确定是什么问题。该错误专门在底部的if语句中发生,其中说“等于”是错误,并且“不能取消引用int”。希望得到一些帮助,因为我不知道该怎么办。先感谢您! 问题答案: 是原始类型而不是。您不能像在这里那样在原始类型上调用方法: 尝试替换此: 与

  • 问题内容: 我试图像这样使用PrintWriter: 但是Java抱怨: 无效不能取消引用 如果我做: 可行,有什么原因吗? 问题答案: 是。(和其他方法)的签名返回(不是)。您不能将调用链接到方法。

  • 问题内容: 因此,我在这里看到了一个示例,该示例如何使用Comparator接口对ArrayList进行排序,因此我进行了尝试。使用Strings可以很好地工作,但是我要排序的一个变量是Integer,它将无法编译,并说“不能取消引用int”。 我该怎么做才能使它起作用,并允许我按score变量对ArrayList进行排序? 这是我的代码: 谢谢您的帮助! 问题答案: 您不能在上调用方法;没有可以

  • 调用原子。结构字段上的AddInt64会恐慌,但当我们重新排列字段顺序时不会;为什么? 使用此类型: 并调用

  • " boolean cancel(boolean mayInterruptIfRunning)尝试取消此任务的执行。如果任务已经完成、已经取消或由于其他原因无法取消,此尝试将会失败 https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Future.html#cancel(布尔值) 除了上面列出的原因之外,还有什么其他原因会无

  • 情况是这样的:我有一个ObservableSet(因为我的数据的ID字段必须是唯一的),它有一个侦听器。该侦听器更新ObservableList。ObservableList反过来由TableView监听。(根据注释,这都是必要的,因为在JavaFX中不能使用ObservableSet支持TableView。) 然而,我们发现对集合执行多个操作不会触发TableView的刷新。 null 但是,编