如何根据第一个数字java从数组中获取整数值

时间:2017-07-05 12:34:30

标签: java integer

我有int number值和int[] numberArray 我希望获得numberArray开头的number的所有值。

我想做的是

for (int i=0;i<numbers.length;i++){
    if(numberArray[i] "starts with" number){
        System.out.print(numberArray[i]);
     }
}

我还需要使用2位和3位数字。

你能帮我找到解决办法吗?

编辑:感谢您的帮助,找到了解决方案。最后的代码看起来像这样:

String num = String.valueOf(number);
for (int i =0; i< numberArray.size();i++) {
    String anumber = String.valueOf(numberArray[i]);
    if (anumber.startsWith(num)){
        System.out.print(numberArray[i])
    }
}

6 个答案:

答案 0 :(得分:2)

这是一些未经测试的java代码。但非常糟糕的做法和糟糕的表现......无论如何应该对你有用^^

public static ArrayList<Integer> getStartingWith(int[] numbers, int key)
{
ArrayList<Integer> matching = new ArrayList<Integer>();

String keyAsString = Integer.toString(key);

for(int i = 0; i < numbers.length; i++)
{
    if(Integer.toString(numbers[i]).startsWith(keyAsString))
        matching.add(numbers[i]);
}
return matching;
}

看看@Andreas的回答。比我聪明的方式!!!

答案 1 :(得分:1)

如果您不想执行任何字符串转换(比较时),您可以将其保留为分区。

public void findIfStartingWithDigit(int number){
  int digits = String.valueOf(number).length();
  int tmpNumber;
  for (int i = 0; i < numbers.length; i++){
    tmpNumber = numbers[i];
    while (tmpNumber >= 10*digits){
      tmpNumber = tmpNumber / 10;
    }
    if (tmpNumber == number){
      System.out.println(numbers[i]);
    }
  }
}

答案 2 :(得分:1)

使用流的方法:

所以方法:

  • 从数组中创建一个Stream,
  • int转换为String
  • 通过过滤并仅保留匹配的元素
  • 来使用startsWith方法
  • 回到int
  • 返回包含这些值的List
public static List<Integer> intStartWidth(int[] values, int start) {
    return Arrays.stream(values)                 //Stream over the array
                 .mapToObj(Integer::toString)    //converts to String
                 .filter(element -> element.startsWith(Integer.toString(start)))  //keep only ones which match
                 .map(Integer::valueOf)          //converts to int
                 .collect(Collectors.toList());  //assembly on a List
 }

//--------------------------------------------------------------------------------

public static void main(String[] args) {
    int[] tab = new int[]{496781, 49872, 3, 49, 76};
    int start = 49;

    List<Integer> result = intStartWidth(tab, start);
    result.forEach(System.out::println);
}

如何使用它,获取arrayint,调用方法,然后打印全部以检查它是否有效

它比手动迭代数字或者检查每一个更容易,这里只是现有的方法

答案 3 :(得分:0)

使用数字中的位数。您还可以比较String而不是转换回int。您还应该检查数字中的位数不大于数组中数字的位数

int number;
String stringNumber = String.valueOf(number);

for (int i = 0 ; i < numbers.length ; i++) {
    String num = Integer.toString(numbers[i]);
    if(num.length() >= stringNumber.length() && num.substring(0, stringNumber.length()).equals(stringNumber)) {
        System.out.println(numbers[i]);
    }
}

答案 4 :(得分:0)

//...
public static void main(String[] args) {
        // TODO Auto-generated method stub

            String x = "yourstring";
            String pattern = "0123456789";
            String piece  = "";
            StringBuilder num = new StringBuilder();
           if(startsWithDigit(x)){
               for(int i = 0; i < x.length(); i++) {
                    piece = x.substring(i,i+1);             
               if (pattern.indexOf(piece) >0){
                   num.append(piece) ;
               }
               else
                   break;
               }   
          }
           System.out.println(num.toString());
          }
          static boolean startsWithDigit(String s) {
            return Pattern.compile("^[0-9]").matcher(s).find();
    }

答案 5 :(得分:-1)

class Test
{ static int firstDigit(int x)
    {
        // Keep dividing by 10 until it is
        // greater than equal to 10
        while(x >= 10)
            x = x/10;
        return x;
    }

    // Driver method
    public static void main(String args[])
    {
        System.out.println(firstDigit(12345));
        System.out.println(firstDigit(5432));
    }
}