Java中数组的顺序

Java中数组的顺序,java,arrays,Java,Arrays,我有一个有20个数字的数组a[I],数组a[I]我需要创建一个数组B[],它由数组a[I]的前10位数字组成,并输出它们数组B[],首先显示奇数值,然后显示偶数值 到目前为止,我发现我需要检查I的值是偶数还是奇数,但我不知道如何输出这个顺序 double A[] = new double[20]; int i, K; double a; double B[] = Arrays.copyOf(A,10); List<Double> odd = n

我有一个有20个数字的数组a[I],数组a[I]我需要创建一个数组B[],它由数组a[I]的前10位数字组成,并输出它们数组B[],首先显示奇数值,然后显示偶数值

到目前为止,我发现我需要检查I的值是偶数还是奇数,但我不知道如何输出这个顺序

    double A[] = new double[20];
    int i, K;
    double a;
    double B[] = Arrays.copyOf(A,10);
    List<Double> odd = new ArrayList<Double>();
    List<Double> even = new ArrayList<Double>();
    BufferedReader br = new BufferedReader(
        new InputStreamReader(System.in));
    System.out.println("XX XX XX"); 
    System.out.print("K=");
    try {
        K = Integer.parseInt(br.readLine());
    }
    catch (Exception ex) {
        System.out.println("input-output error");
        return;
    }
      if (K==0) {
           Random r = new Random();
           for (i=0; i<20; i++)
            A[i] =r.nextDouble()*20-10;
          }
          else{
           A[0]=1;
           i = 1;
           while (i<20){
            a = A[i-1];
            a = Math.toRadians(a);
            A[i] =a*K;
            i = i+1;
            }
          }
      System.out.println("A:");
      for (i=0; i<20; i++){
       System.out.printf("%.2f\t", A[i]);
       if (i==9) System.out.println();
      }
      for (i=0;i<10;i++) 
          B[i]=A[i];
      {
            if ((i % 2) == 0) {
                odd.add((double) i);
            } else {
                even.add((double) i);
            }
        }
      i=i+1;
      Collections.sort(odd);
      Collections.sort(even);
      do {System.out.println("\nB:");
        for (i=0; i<10; i++){
           System.out.printf("%.2f\t",  B[i]);
        }
      }
      while (i<10);
      }
      }

现在它只输出A[]的值。我如何才能按我需要的B[]顺序进行打印?

在括号中输入时,您可能犯了一个错误:

for (i = 0; i < 10; i++)
    B[i] = A[i];
{
    if ((i % 2) == 0) {
        odd.add((double) i);
    } else {
        even.add((double) i);
    }
}
已解决:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;

public class xxx {
public static void main(String[] args) {

    double A[] = new double[20];
    int i, K, s, j;
    double a;
    double B[] = new double[20] ;
    BufferedReader br = new BufferedReader(
        new InputStreamReader(System.in));
    System.out.println("xxx xxx");  
    System.out.print("K=");
    try {
        K = Integer.parseInt(br.readLine());
    }
    catch (Exception ex) {
        System.out.println("input-output error");
        return;
    }
      if (K==0) {
           Random r = new Random();
           for (i=0; i<20; i++)
            A[i] =r.nextDouble()*20-10;
          }
          else{
           A[0]=1;
           i = 1;
           while (i<20){
            a = A[i-1];
            a = Math.toRadians(a);
            A[i] =a*K;
            i = i+1;
            }
          }
      System.out.println("A:");
      for (i=0; i<20; i++){
       System.out.printf("%.2f\t", A[i]);
       if (i==9) System.out.println();
      }
      s=0;
      for(i=0; i<20; i++){
       j=i%2;
       if(j==0);
       else{
        B[s]=A[i];
        s++;
       }
      }
      for(i=0; i<20; i++){
       j=i%2;
       if(j==0){
        B[s]=A[i];
        s++;

       }
      }
      do {System.out.println("\nB:");
        for (i=0; i<20; i++){
           System.out.printf("%.2f\t",  B[i]);
           if (i==9) System.out.println();
        }
      }
      while (i<20);
      }
      }
导入java.io.BufferedReader;
导入java.io.InputStreamReader;
导入java.util.Random;
公共类xxx{
公共静态void main(字符串[]args){
双A[]=新双[20];
int i,K,s,j;
双a;
双B[]=新双[20];
BufferedReader br=新的BufferedReader(
新的InputStreamReader(System.in));
系统输出打印项次(“xxx xxx”);
系统输出打印(“K=”);
试一试{
K=Integer.parseInt(br.readLine());
}
捕获(例外情况除外){
System.out.println(“输入输出错误”);
返回;
}
如果(K==0){
随机r=新随机();

对于(i=0;i而不是使用
Collections.sort(List)
使用
Collections.sort(List,Comperator)
并提供一个自定义Comperator。@Kevin Esche是对的,使用它可以根据需要对列表进行排序。顺便说一句,不鼓励使用c样式的数组表示法;编写
double[]a=new double[20]
取而代之的是…但B行仍然不是按奇偶顺序排列的。在数组A的结果中,B应该是[3.28 9.24 3.26 5.96-9.75-5.67 3.39-2.99-0.03-0.01]@Jekabs应该根据什么标准对
B
进行排序?你的问题说明了可能性,然后是均等的。同样,格式不好的代码、c风格的数组语法、不统一的变量名、除了
main
之外不使用任何方法,也不使用可见的代码块;很难阅读……请解释其中有哪些错误,以及你修改了哪些错误来修复它们。
public class Program {
    private static final Scanner in = new Scanner(System.in);

    public static void main(String[] args) {
        System.out.println("XX XX XX");

        int K = readInt("K");

        double[] A = new double[20]; /**/ {
            switch (K) {
                case 0:
                    Random rng = new Random();
                    for (int i = 0; i < 20; i++) {
                        A[i] = rng.nextDouble() * 20 - 10;
                    }
                    break;
                default:
                    A[0] = 1;
                    for (int j = 1; j < A.length; j++) {
                        double a = A[j - 1];
                        a = Math.toRadians(a);
                        A[j] = a * K;
                    }
                    break;
            }
        }

        double[] B = new double[10]; /**/ {
            List<Double> odds = new ArrayList<>();
            List<Double> evens = new ArrayList<>();
            for (int i = 0; i < B.length; i++) {
                double value = A[i];
                if ((i % 2) == 0) {
                    odds.add(value);
                } else {
                    evens.add(value);
                }
            }
            int bi = 0;
            for (int i = 0; i < odds.size(); i++, bi++) {
                B[bi] = odds.get(i);
            }
            for (int i = 0; i < evens.size(); i++, bi++) {
                B[bi] = evens.get(i);
            }
        }

        printArray("A", A);
        printArray("B", B);
    }

    private static int readInt(String name) {
        while(true) {
            System.out.print(name + "=");
            String input = in.next();
            try {
                return Integer.parseInt(input);
            } catch (NumberFormatException ex) {
                System.err.println("please provide a valid integer for " + name);
            }
        }
    }

    private static void printArray(String name, double[] value) {
        System.out.print(name + ":");
        for (int i = 0; i < value.length; i++) {
            if (i % 10 == 0) {
                //break line every 10 entries
                System.out.println();
            }
            System.out.printf("%10.2f\t", value[i]);
        }
        System.out.println();
    }
}
XX XX XX
K=0
A:
      3,28       -9,24       -9,75       -5,67        5,39        3,26       -2,99       -0,03        5,96       -0,01  
     -8,70        7,28        7,53       -1,09        2,94       -8,13       -4,29        0,50        3,38       -8,89  
B:
      3,28       -9,75        5,39       -2,99        5,96       -9,24       -5,67        3,26       -0,03       -0,01  

Process finished with exit code 0
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;

public class xxx {
public static void main(String[] args) {

    double A[] = new double[20];
    int i, K, s, j;
    double a;
    double B[] = new double[20] ;
    BufferedReader br = new BufferedReader(
        new InputStreamReader(System.in));
    System.out.println("xxx xxx");  
    System.out.print("K=");
    try {
        K = Integer.parseInt(br.readLine());
    }
    catch (Exception ex) {
        System.out.println("input-output error");
        return;
    }
      if (K==0) {
           Random r = new Random();
           for (i=0; i<20; i++)
            A[i] =r.nextDouble()*20-10;
          }
          else{
           A[0]=1;
           i = 1;
           while (i<20){
            a = A[i-1];
            a = Math.toRadians(a);
            A[i] =a*K;
            i = i+1;
            }
          }
      System.out.println("A:");
      for (i=0; i<20; i++){
       System.out.printf("%.2f\t", A[i]);
       if (i==9) System.out.println();
      }
      s=0;
      for(i=0; i<20; i++){
       j=i%2;
       if(j==0);
       else{
        B[s]=A[i];
        s++;
       }
      }
      for(i=0; i<20; i++){
       j=i%2;
       if(j==0){
        B[s]=A[i];
        s++;

       }
      }
      do {System.out.println("\nB:");
        for (i=0; i<20; i++){
           System.out.printf("%.2f\t",  B[i]);
           if (i==9) System.out.println();
        }
      }
      while (i<20);
      }
      }