2

コードの大部分は理解できたと思いますが、残念な部分が 1 つだけあります。printList(list) を使用すると、これらの数字の 2 乗を出力することになっているときに、1、2、3、... 最大 9 が出力されます。createSquaresList(10) を出力すると、正しく出力されます。どんな助けでも大歓迎です:-)。

import java.util.*;

public class Lab8a
{
    public static void main(String args[])
    {
        ArrayList<Double> list = createSquaresList(10);
        printList(list);
        removeElement(list, 4);
        printList(list);
        swapElements(list, 2, 6);
        printList(list);
        double max = getMaxValue(list);
        double ave = getAverage(list);
        System.out.println("Max Value = " + max);
        System.out.println("Average = " + ave);
        int idx1 = linearSearch(list, 4);
        int idx2 = linearSearch(list, 75);
        System.out.println("idx 1 = " + idx1);
        System.out.println("idx 2 = " + idx2);
    }

    public static ArrayList<Double> createSquaresList(int n)
    {
        ArrayList<Double> squares= new ArrayList<>();
        double s = 0.0;
        for (double i = 0.0; i <= n-1; i++)
        {
            s = i*i;
            squares.add(s);
        }
        return squares;
    }

    public static double getMaxValue(ArrayList<Double> list)
    {
        double largest = list.get(0);
        for (int i = 1; i < list.size(); i++)
        {
            if (list.get(i) > largest)
            {
                largest = list.get(i);
            }
        }
        return largest;
    }

    public static double getAverage(ArrayList<Double> list)
    {
          double avg = 0.0;
          double sum = 0.0;
          for (int i =0; i < list.size(); i++)
          {
              sum += list.get(i);
          }
          avg = sum / list.size();
          return avg;
    }

    public static void removeElement(ArrayList<Double> list, double index)
    {
        double temp = 0.0;
        int lastPos = list.size() - 1;
        double last = list.get(lastPos);
        index = temp;
        temp = last;
        last = index;
        list.remove(lastPos);
    }

    public static void swapElements(ArrayList<Double> list, int a, int b)
    {
        int temp = 0;
        a = temp;
        temp = b;
        b = a;

    }

    public static int linearSearch(ArrayList<Double> list, double val)
    {
        int pos = 0;
        boolean found = false;
        while (pos < list.size() && !found)
        {
            if (list.get(pos) == val)
            {
                found = true;
            }
            else
            {
                pos++;
            }
        }
        if (found)
        {
            return pos;
        }
        else
        {
            return -1;
        }
    }

    public static void printList(ArrayList<Double> list)
    {
        for(int i = 0; i < list.size(); i++)
        {
            System.out.print(i);
            if(i < list.size()-1)
            {
                System.out.print(", ");
            }
        }
        System.out.println("");
    }
}
4

2 に答える 2

11

変化する

System.out.print(i);

System.out.print(list.get(i));
于 2013-10-28T02:16:29.460 に答える
0

リストの内容ではなくintを出力しているためです。

関数 printList の 3 行を次のように変更してみてください。

System.out.print(list.get(i));
于 2013-10-28T02:21:37.660 に答える