【问题标题】:Can we use contains() method to find a find a digit in a variable?我们可以使用 contains() 方法在变量中查找数字吗?
【发布时间】:2021-09-14 12:12:17
【问题描述】:

在这个 Java 程序中,我想从键盘输入值并检查变量是否包含某个数字。

我正在使用 contains 方法来确定变量是否包含特定数字。 我写代码的时候出错了。有人可以解释一下错误以及如何解决吗?

代码:

package nested_package;

import java.util.Scanner;

public class Age_prog {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();
        System.out.println("a=" + a + "\n" + "b=" + b);
        if (a.contains(1)) {     // ERROR IN THIS LINE
            System.out.println("true");
        } else {
            System.out.println("false");
        }
    }
}

【问题讨论】:

  • 不,我们不能。 int 是原始类型。它没有方法。而Integer 也没有这样的方法。提示:将a转成字符串,测试字符是否匹配b对应的数字字符。
  • “我写代码的时候出错了。”,提问的时候要明确,并附上实际的错误信息。

标签: java loops methods


【解决方案1】:

String 有 contains 方法,您正试图调用 int 类型的 contains 这导致编译错误 您可以将输入类型更改为字符串并检查包含或获取数字并检查其数字是否具有您要查找的数字

        String s = sc.nextLine(); // e.g "120";
        s.contains("1");

【讨论】:

    【解决方案2】:

    如果 a 是 Integer 或 int 并且您需要解析数字的每个数字以查看是否有某个数字您应该将数字转换为字符串然后解析它:

        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        System.out.println("a=" + a + "\n" + "b=" + b);
        String numberToString = String.valueOf(a);
    
        if (numberToString.contains("1")) {
    
            System.out.println("true");
        } else {
            System.out.println("false");
        }
    
        sc.close();
    

    【讨论】:

      【解决方案3】:

      编译器报错的原因是——Java 中的int(和Integer)没有名为contains() 的方法。该方法属于 String 类。

      一种方法是将您的数字转换为字符串并使用contains 方法。
      另一种方法——你可以编写你的 contains 方法来获取两个整数并返回一个布尔值(我将它命名为 containsDigit 以避免混淆)。

      public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
      
          int a = sc.nextInt();
          int b = sc.nextInt();
          
          System.out.println("a=" + a + "\n" + "b=" + b);
          System.out.println(containsDigit(a, 1));
      }
      
      private static boolean containsDigit(int a, int b) {
          while (a > 0) {
              if (a % 10 == b) {
                  return true;
              }
              a /= 10;
          }
          return false;
      }
      

      【讨论】:

        【解决方案4】:
        int a = sc.nextInt();
        int b = sc.nextInt();
        System.out.println("a=" + a + "\n" + "b=" + b);
        if (Integer.toString(a).contains(""+1)) { //   
               System.out.println("true");
        } else {
            System.out.println("false");
        }
        
        • Integer.toString(a)a 转换为字符串
        • contains 接受数字的字符串值
        • 如果你有一个数字,你可以在前面加上 "" 来转换一个字符串(就像我在上面所做的那样),或者直接指定为一个字符串为“1”。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-25
          • 2023-03-24
          • 2016-08-12
          • 2018-06-17
          • 2013-08-16
          • 2022-07-25
          • 1970-01-01
          相关资源
          最近更新 更多