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

メイン メソッドのシグネチャを修正したら、コードを次のように変更します。

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

まず、プログラムがコンパイルされません - 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

main メソッドのシグネチャは次のようになります。

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

ここでfor()ループでは、i を 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 に答える