方法中的java返回数组
我正在用java做我的第一步,所以我的问题很简单——我有一个包含8个整数的数组,我想返回一个包含原始数组中奇数索引元素的数组。这种方法有什么问题?任何其他实施技巧都将不胜感激 我知道我不必在这里使用这个方法,它只是为了练习方法中的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};
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);
}
}
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]