프로그래밍이 처음 이시라면, java를 처음 사용하십시오. 나는 클래스와 그 컴포넌트, 메소드 등과 같은 기본적인 부분을 이해하는 것 같지만, 어떻게 조합 할지를 알 수 없다. 예를 들어, 튜토리얼을 따라하고 생성하는 동안 전달 된 args를 기반으로 모든 카드가 될 수있는 클래스 카드를 작성하려고합니다.주요 메소드 및 클래스, 선언 할 위치는 어디입니까?
제 첫 번째 문제는 클래스 공개 선언 (5 행)을 선언하면 컴파일러에서 불법적 인 표현 시작이라고 말합니다.
public을 제거하면 정적 환경에서 비 정적 변수를 참조 할 수 없다는 println 문이 계속됩니다. 그것은 항상 정적 인 메인 메소드 내부에서 작업하기 때문입니다. 그래서 Card에 내부 상태를 읽고 println 문에 줄 수있는 메소드를 추가해야합니다. 주요 방법은 카드 클래스의 일부가 지금
내 중괄호 균형 public class Card {
//declare states
//rank 1-13 for ace-king
//suit 1-4 spade,heart,club,diamond
public int rank;
public int suit;
//constructor
public Card(int startSuit, int startRank) {
rank = startRank;
suit = startSuit;
}
//methods for Card
public static void main(String[] args) {
//call Card constructor
//make card ace of spades (1,1)
Card aceOfSpades = new Card(1,1);
//read internal state of new Card object
//what kind of card is it?
System.out.println("Card is ..." + rank + " of " + suit);
}
}
, 내 생각 :
public class Deck {
public static void main(String[] args) {
class Card {
public int rank;
public int suit;
public Card(int startSuit, int startRank) {
rank = startRank;
suit = startSuit;
}
}
Card aceOfSpades = new Card(1, 1);
System.out.println("Card is ..." + Card.rank + " of " + Card.suit);
}
}
여기 두 개의 새로운 코드 라운드, 파일은 Card.java입니다 그것의 더 나은보고. oney 컴파일 오류는 이제 println 문에있는 변수와 연관됩니다. (정적이 아닌 변수 수트는 정적 컨텍스트에서 참조 할 수 없습니다.) 변수 상태를 읽고 내 println의 메서드를 사용하는 getSuit() 및 getRank()와 같은 메서드를 작성해야한다는 것을 의미한다고 생각합니다. 변수 자체?
그 방법은 이렇게 생겼습니까?
public int getSuit() {
return suit;
}
수업의 이름은 해당 파일의 이름과 일치해야
는'Card.java'라는 새로운 파일을 만들고 거기에 당신의'Card' 클래스를 넣어라고합니다. –
또는 Deck 클래스에서 직접 만들면됩니다 (메서드가 아닙니다!). – ddmps
좋아요, 알아 냈습니다. 나는 카드를 만들었지 만 그것을 사용하지는 않았다. 나는 Card.rank가 아니라 aceOfSpades.rank를 참조해야했습니다. 객체 지향 프로그래밍의 경우 실제로 객체를 만들고 사용하는 데 도움이됩니다. 미래의 Google 직원 - 저는 main 메소드 바로 위에있는 getSuit() 및 getRank() 메소드를 카드에 넣는 결과를 낳았습니다. –