Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
方法中的java返回数组_Java_Arrays_Methods - Fatal编程技术网

方法中的java返回数组

方法中的java返回数组,java,arrays,methods,Java,Arrays,Methods,我正在用java做我的第一步,所以我的问题很简单——我有一个包含8个整数的数组,我想返回一个包含原始数组中奇数索引元素的数组。这种方法有什么问题?任何其他实施技巧都将不胜感激 我知道我不必在这里使用这个方法,它只是为了练习 package com.tau; public class Main { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};

我正在用java做我的第一步,所以我的问题很简单——我有一个包含8个整数的数组,我想返回一个包含原始数组中奇数索引元素的数组。这种方法有什么问题?任何其他实施技巧都将不胜感激

我知道我不必在这里使用这个方法,它只是为了练习

package com.tau;

public class Main {


    public static void main(String[] args) {

        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};


        System.out.println("1.e odd index numbers in array : " + oddIndex(arr));

        int j = 0;
        public static int[] oddIndex(int[] array){
            int newArrSize = array.length;
            if ((newArrSize % 2) != 0) {
                newArrSize--;
            }

            int[] newArr = new int[newArrSize];

            for (int i = 0; i < array.length; i++)
                if ((array[i] % 2) == 0) {
                    newArr[j] = array[i];
                    j++;
                }
            return newArr;

      }
    }


} 
package com.tau;
公共班机{
公共静态void main(字符串[]args){
int[]arr={1,2,3,4,5,6,7,8};
System.out.println(“数组中的1.e奇数索引号:”+oddIndex(arr));
int j=0;
公共静态int[]索引(int[]数组){
int newArrSize=array.length;
如果((新数组大小%2)!=0){
新尺寸--;
}
int[]newArr=newint[newArrSize];
for(int i=0;i
1)在Java的方法中不能有方法。将您的
oddinex()
方法移到
main()
方法之外

2) 并且不能在另一个方法中使用一个方法的局部变量。因此,我将变量
j
移动到
oddinex()
方法

public class Main {

    public static void main(String[] args) {

        int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8 };

        System.out.println("1.e odd index numbers in array : " + oddIndex(arr));

    }

    public static int[] oddIndex(int[] array) {
        int j = 0;
        int newArrSize = array.length;
        if ((newArrSize % 2) != 0) {
            newArrSize--;
        }

        int[] newArr = new int[newArrSize];

        for (int i = 0; i < array.length; i++)
            if ((array[i] % 2) == 0) {
                newArr[j] = array[i];
                j++;
            }
        return newArr;

    }

}
公共类主{
公共静态void main(字符串[]args){
int[]arr={1,2,3,4,5,6,7,8};
System.out.println(“数组中的1.e奇数索引号:”+oddIndex(arr));
}
公共静态int[]索引(int[]数组){
int j=0;
int newArrSize=array.length;
如果((新数组大小%2)!=0){
新尺寸--;
}
int[]newArr=newint[newArrSize];
for(int i=0;i
而且,正如Jhamon所评论的,您的方法名称和内部逻辑不匹配<强>奇数索引!=奇数值

与代码有关的问题:

  • 不能在另一个方法中定义方法
  • 如果要返回包含原始数组中奇数索引元素的数组。您应该检查索引%2=0而不是检查该索引的数组值
试试这个

public class Main {
      public static void main(String[] args) {
         int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};
         System.out.println("1.e odd index numbers in array : " +  Arrays.toString(oddIndex(arr)));

    }



     public static int[] oddIndex(int[] array){

         int[] newArr = new int[array.length];
         int j=0;
         for (int i = 0; i < array.length; i++){
             if ((i % 2) != 0) {
                 newArr[j++] = array[i];

             }
         }
         return Arrays.copyOf(newArr, j);
    }
 }
  • 不能在方法中编写方法

  • 您正在创建一个名为数组的newArr。此数组的大小是给定给您的。如果使阵列动态化,则内存使用量将减少。对于动态数组,必须使用ArrayList

  • 对于检查奇数索引,直接在For循环中给出i=1的值,然后递增+2。那么指数将是1,3,5。。。你不必为此做那么多计算

    import java.util.ArrayList;
    
    public class ReturnArray 
    {
        public static void main(String[] args) 
        {
            int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};
            System.out.println("Odd index numbers in array : " + oddIndex(arr));            
        }
    
        public static ArrayList<Integer> oddIndex(int[] array)
        {
            ArrayList<Integer> al = new ArrayList<Integer>();
            for (int i = 1; i < array.length; i+=2)
                al.add(array[i]);
            return al;
        }
    }
    

    您不能在另一个方法中声明方法。此方法将返回奇数元素,而不是奇数索引元素。如果您返回奇数索引元素,您将拥有大约一半的元素数。要查看每一个元素,请不要混淆奇数索引元素的偶数。i、 e.arr[1]==2为什么您更喜欢返回数组.copyOf(newArr,j)和打印数组.toString(oddIndex(arr))而不是返回newArr和打印oddIndex(arr),有什么特殊原因吗?因为newArr的大小与原始数组的大小相同。因此,只需调整大小即可。您可以将
    newArr
    优化为
    int[]newArr=newint[array.length/2]
    然后简单返回
    newArr
    。因为奇数索引元素的大小将是原始数组大小的一半。
    Arrays.toString(oddIndex(arr)
    用于将元素打印为字符串,否则打印
    arr
    将只打印
    arr
    的参考地址。
    import java.util.ArrayList;
    
    public class ReturnArray 
    {
        public static void main(String[] args) 
        {
            int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};
            System.out.println("Odd index numbers in array : " + oddIndex(arr));            
        }
    
        public static ArrayList<Integer> oddIndex(int[] array)
        {
            ArrayList<Integer> al = new ArrayList<Integer>();
            for (int i = 1; i < array.length; i+=2)
                al.add(array[i]);
            return al;
        }
    }
    
    Odd index numbers in array : [2, 4, 6, 8]