返回数组中每个数字的最后一位

Returning the last digit of every number in an array

我的问题是我试图 return int 数组中每个元素的最后一位,但下面的函数 return 是数组的最后一个元素。我该怎么做。

数组:{10, 12, 41, 23, 71}

预期输出:0、2、1、3、1

public class TestForEachLoop
{
    private int[] iLoop = new int[5];
    
    public int getLastDigit(){

        int[] iLoop = new int[]{10, 12, 41, 23, 71};
        int lastnumber = iLoop[iLoop.length - 1];
        return lastnumber;
    }    
}

您需要使用 for 循环遍历数组。

for (int i = 0; i < array.length; i++ ) {
   // do something with array[i]
}

要获取每个数字的最后一位,您应该使用余数 % 运算符。对于两个数字 mnm % n returns m divided by n 的余数。当心您可能还需要使用 Math.abs() 的负数。

您可以使用modulo 运算符获取数字的最后一位,然后使用Math class 中的abs 方法获取正值。

public class Main {
    
    public static int getLastDigit(int n){
        int lastDigit = Math.abs(n % 10);
        return lastDigit;
    }
    
    public static void main(String[] args){
        int[] iLoop = new int[]{10, 12, 41, 23, 71};
        for(int i = 0; i < iLoop.length; i++){
            System.out.print(getLastDigit(iLoop[i]) + " ");
        }
    }
}

您可以通过使用取模 '%' 运算(更多关于它 here)结合 Math.abs() 来检索数字的最后一位,以避免进入负数问题。 然后您只需将该逻辑应用于数组的每个元素。

您可以很好地使用来自 Java 8 的流:

  int[] iLoop = new int[]{10, 12, 41, 23, 71};
  Arrays.stream(iLoop).forEach(n -> System.out.print(Math.abs(n) % 10 + " "));

以运行为例:

import java.util.Arrays;
class Main {  
  public static void main(String args[]) { 
      
      int[] iLoop = new int[]{10, 12, 41, 23, 71};
      Arrays.stream(iLoop).forEach(n -> System.out.print(Math.abs(n) % 10 + " "));
  } 
}
public int getLastDigit(int number){
    String sNumber=Integer.toString(number);
    return Integer.parseInt(String.valueOf(sNumber.charAt(sNumber.length() - 1))); //parseInt only accept String value
}

public int[] getVectorLastNumbers(int[] numbers){
    int[] lastNumbers=new int[numbers.length];
    for(int i=0;i<numbers.length;i++){
     lastNumbers[i]=getLastDigit(numbers[i]);  
    }
   return lastNumbers;
}