2014-01-28 1 views
2

객체의 배열 :만들기 I 클래스라는 물고기 만든

public class Fish { 

    private String species; 
    private int size; 

    //Constructor 
    public Fish(int x, String s) { 
     size = x; 
     species = s; 
    } 

    public String getSpecies() { return species; } 

    public int getSize() { return size; } 

    public String toString() { 
     return String.format("A %dcm %s", size, species); 
    } 
} 

그리고 나는 또한의 배열을 보유하고 '물고기'라는 속성을 가지고 의미라는 클래스 연못을하기 시작했다 물고기 개체입니다. 나는 이것을하는 방법을 확신하지 못한다. 지금까지 내 시도입니다. 다음과 같이

private Object[] fish;

: 나는

public class Pond { 
    private int capacity; 
    private Object[] fish; //This is what I am trying to initialize. list of Fish. 
    private int numFish; 

    //Capacity Constructor 
    public Pond(int n, int c) { 
     n = numFish; 
     c = capacity; 
    } 

    public int getNumFish() { return numFish; } 

    public boolean isFull() { 
     boolean isFull = false; 
     if (numFish >= capacity) { 
      isFull = true; 
     } 
     else { 
      isFull = false; 
     } 
     return isFull; 
    } 

    public String toString() { 
     return String.format("Pond with %d fish", numFish); 
    } 

    public void add(Fish aFish) { 
     if (numFish <= capacity) { 
      numFish += 1; 
      fish.add Fish; 
     } 
     else { 
      numFish += 0; 
     } 
    } 
} 
+0

http://docs.oracle.com/javase/tutorial/ java/nutsandbolts/arrays.html. BTW, 나는 어떤 질문도 볼 수 없다. 단지 두 개의 주석이 있습니다 : 물고기 배열이라면'Fish []'타입이어야하고'물고기 '(배열 ==> 복수 물고기 ==> plral 양식)라고해야합니다 –

+1

@JBNizet 물고기는 물고기를 위해서도 복수형입니다 , 나는 생각한다. (원어민이 아닌). 그러나 그렇습니다,이 맥락에서 물고기는 아마 더 낫습니다. –

+0

@ peter.petrov : 감사합니다. 나는 오늘 무언가를 배웠다. –

답변

0

Array 대신 ArrayList을 사용해야합니다. 요구 사항에 따라 ArrayList가 커질 수 있기 때문입니다.

이 code.Should 도움을 한 번 봐 당신 : 다음

public class Fish { 
String name; 


public Fish(String name) { 

    this.name=name; 

} 

public String toString() { 
    return name; 
} 
} 

과 :

import java.util.*; 

public class Pond { 

ArrayList<Fish> fishInPond = new ArrayList<>(); 


public void addFish(Fish e) { 

    fishInPond.add(e); 
} 

public void showFishes() { 
    for (int i= 0; i<fishInPond.size();i++) { 
     fishInPond.get(i); 
    } 
    System.out.println("Fishes in my pond: " + fishInPond); 
} 


    public static void main(String[]args) { 
     Pond myPond = new Pond(); 
     myPond.addFish(new Fish("Tilapia")); 
     myPond.addFish(new Fish("cat fish")); 

     myPond.showFishes(); 
    } 

}

+0

감사합니다. 이것은 나를 많이 도왔다. 나열된 물고기를 둘러싼 대괄호를 제거 할 수있는 방법이 있습니까?예를 들어 [Tilapia, cat fish]를 표시하는 대신 고양이 물고기 인 Tilapia가 표시됩니까? – theGuy05

+0

어쩌면 아마도 각 물고기가 자신의 라인을 인쇄 할 때 만들 수 있을까요? – theGuy05

+0

당신이 할 수있는 몇 가지 방법이 있습니다, 나는 당신이 [이] (http://stackoverflow.com/questions/7854084/java-printing-linkedlist-without-square-brackets) 읽을 것을 권합니다. –

1

변경이 오전

private Fish[] fish;

즉이는 물고기와 객체뿐만 아니라 어떤
종류 (그들은하지 포유 동물 eg).

1

Pond 생성자에서 생성자 인수에 비공개 필드를 할당합니다.

public Pond(final int n, final int c) { 
    numFish = n; 
    capacity = c; 
} 

사이드 노트 : 나는 다른 방법으로 주위해야한다고 생각 Pond 생성자 인자를 선언 finalprevent 컴파일시 에러 이런 종류의.

또한 fish 배열을 런타임에 확장하려는 경우 array은 컨테이너 유형의 최선의 선택이 아닙니다. ArrayList<Fish>은 런타임에 확장 할 수 있으므로 더 나은 선택입니다. 다음

1

이 유효하지 않습니다 - 배열과

fish.add aFish; 

당신은

fish[numFish] = aFish; //increment numFish after this 

당신은 또한 당신의 생성자에서 배열을

fish = new Fish[capacity]; 

를 초기화해야하나요.

관련 문제