2013-10-28 2 views
2

나는 대부분의 코드를 알고 있다고 생각하는데, 슬픔을주고있는 부분이 하나있다. printList (list)를 사용하면이 번호의 제곱을 인쇄 할 때 1, 2, 3, ... 최대 9 개를 인쇄합니다. createSquaresList (10)를 출력하면 올바르게 인쇄됩니다. 어떤 도움을 주셔서 감사합니다 :-).사각형 목록에 자바가있는 ArrayList - 숙제

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(""); 
    } 
} 

답변

11

변경

System.out.print(i); 

System.out.print(list.get(i)); 
+0

나는 지금 어리 석다. 고마워! – gdhc21

+2

아무런 문제가 없습니다. 그게 우리가 여기있는 이유입니다. 도움을 청하기 전에 모든 과제를 시도해 봤으면 좋겠다. 다른 많은 학생들과 마찬가지로 우리 무릎에 그것을 덤핑하는 대신에. –

+0

좋은 답변입니다. – paqogomez

0

로는 인쇄이기 때문에이 목록의 내용이 아니라 int이며

함수의 3 라인을 변경해보십시오 printList to :

System.out.print(list.get(i)); 
+1

정말 늦었습니다. 이미 게시 된 답변에는 적용되지 않는 내용이 없습니다. – nhgrif

+0

답변이 동일하고 내용이 같은 답변을 게시하지 마십시오. –