我有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])
}
}
答案 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)
使用流的方法:
所以方法:
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);
}
如何使用它,获取array
,int
,调用方法,然后打印全部以检查它是否有效
它比手动迭代数字或者检查每一个更容易,这里只是现有的方法
答案 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));
}
}