0

任务是接受一个数组'a',从'a'中获取替代值,将它们以相反的顺序存储在另一个数组'b'中并打印'b'的值。我写了下面的代码,但是打印出来的 'b' 的值都是 0。

import java.io.*;
public class Assignment
{
    public int[] array(int[] a)
    {
        int l=a.length;
        int x=l-1;
        int[] b=new int[l];
        for(int i=x;i>=0;i=-2)
        {
            b[x-i]=a[i];
        }
        return b;
     }

    public static void main()throws IOException
    {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        Assignment asg=new Assignment();
        System.out.println("How many numbers do you want in the array?");
        int l=Integer.parseInt(br.readLine());
        System.out.println("Enter the numbers");

        int[] a =new int[l];
        for(int i=0;i<l;i++) 
            a[i]=Integer.parseInt(br.readLine());

        int[] b=asg.array(a);
        for(int j=0;j<l;j++) 
            System.out.println(b[j]);
    }
}
4

4 回答 4

1

修复 main 方法签名后,将代码更改为如下:

try
        {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        MainClass asg=new MainClass();
        System.out.println("How many numbers do you want in the array?");
        int l=Integer.parseInt(br.readLine());
        System.out.println("Enter the numbers");
        int[] a =new int[l];
        for(int i=0;i<l;i++) a[i]=Integer.parseInt(br.readLine());
        int[] b=asg.array(a);
        int newSize = 0;
        if(l% 2 == 0)
            newSize = l/2;
        else
            newSize = (l/2) +1;
        for(int j=0;j<newSize;j++) System.out.println(b[j]);
        }
        catch(Exception ex)
    {
        ex.printStackTrace();
    }


public int[] array(int[] a)
        {
            int l=a.length;
            int x=l-1;
            int newSize = 0;
            if(l% 2 == 0)
                newSize = l/2;
            else
                newSize = (l/2) +1;

            int[] b=new int[newSize];
            int i = 0;
            while(x >= 0)
                {
                    b[i]=a[x];
                    i++;
                    x -= 2;
                }

            return b;
         }

b 的长度应该是 a 的一半,并且与 a 不同。

于 2014-09-15T12:46:13.277 回答
0

首先,您的 prgram 无法编译 - main() 方法的签名错误。利用

public static void main(String[] args) {
...
}

然后将在新数组中存储值的循环更改为:

for(int i = x; i >= 0; i--) {
    b[x - i] = a[i];
}
于 2014-09-15T11:59:38.803 回答
0

main方法签名不正确并检查此情况i=-2

于 2014-09-15T11:57:44.693 回答
0

主要方法签名必须如下所示:

 public static void main(String s[]){
        ....
}

for()循环中,我应该减 1;

public int[] array(int[] a)
        {
            int l=a.length;
            int x=l-1;
            int[] b=new int[l];
            for(int i=x;i>=0;i--)  // decrement i by 1;
            {
                b[x-i]=a[i];
            }
            return b;
         }
于 2014-09-15T11:57:52.420 回答