Java中数组的顺序
我有一个有20个数字的数组a[I],数组a[I]我需要创建一个数组B[],它由数组a[I]的前10位数字组成,并输出它们数组B[],首先显示奇数值,然后显示偶数值 到目前为止,我发现我需要检查I的值是偶数还是奇数,但我不知道如何输出这个顺序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
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);
}
}