2

我想我已经弄清楚了大部分代码,只有一个部分让我感到悲伤。当我使用 printList(list) 时,它会打印出 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 回答