Em nhớ đặt câu hỏi rõ ràng cho mong muốn của em nha: ghi tiêu để như vậy rất lười vào đọc.
Với lại đây là bài tập , em làm đã rồi hỏi. Em cho người khác thấy công sức em bỏ ra trước đã.
Yêu cầu 1 đã rõ : thuộc tính là bật và chất tạo class có 2 thuộc tính đó thôi, anh code = java em tham khảo:
public class Card {
private String ranks =""; // 2->A
private String suits =""; //clubs (♣), diamonds (♦), hearts (♥) and spades (♠);
/**
* @return the ranks
*/
public String getRanks() {
return ranks;
}
/**
* @param ranks the ranks to set
*/
public void setRanks(String ranks) {
this.ranks = ranks;
}
/**
* @return the suits
*/
public String getSuits() {
return suits;
}
/**
* @param suits the suits to set
*/
public void setSuits(String suits) {
this.suits = suits;
}
}
Yêu cầu 2 thì tạo 1 lớp bao gồm:
-1 list danh sách bộ bài có kiểu là Card đã tạo ở trên.
-1 function dùng để tạo 52 là bài
-1 funcion để tráo là bài có tham số là số lần tráo bài, code java :
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class PlayingCards {
private static final String[] ranks = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" }; // 2->A
private static final String[] suits = { "clubs", "diamonds", "hearts", "spades" };
private List<Card> playingCards = new ArrayList<Card>();
/**
* Constructor
*/
public PlayingCards (){
this.createPlayingCards();
}
/**
* @return the playingCards
*/
public List<Card> getPlayingCards() {
return playingCards;
}
/**
* @param playingCards
* the playingCards to set
*/
public void setPlayingCards(List<Card> playingCards) {
this.playingCards = playingCards;
}
/**
* @name createPlayingCards
* @desc Helper function to generic playingcards
*/
public void createPlayingCards() {
Card card;
for (int j = 0; j < ranks.length; j++) {
for (int k = 0; k < suits.length; k++) {
card = new Card();
card.setRanks(ranks[j]);
card.setSuits(suits[k]);
playingCards.add(card);
}
}
}
/**
* @name shufflePlayingCards
* @param time
*
*/
public void shufflePlayingCards(int time){
for(int i =0;i<time;i++) {
Collections.shuffle(this.getPlayingCards());
}
}
}
Cuối cùng là test thôi, code java:
public class Test {
public static void main(String[] args) {
PlayingCards plCards = new PlayingCards();
//plCards.createPlayingCards();
plCards.shufflePlayingCards(2);
for (int i = 0; i < plCards.getPlayingCards().size(); i++) {
System.out.print(plCards.getPlayingCards().get(i).getRanks());
System.out.println(plCards.getPlayingCards().get(i).getSuits());
}
}
}
ý của em là khi anh tạo 1 cái class thì anh cài đặt cho nó những gì đó anh, ví dụ như trong hình em tạo class để chạy code của anh thì em stick những phần nào ạ
Bởi vì nó là reference type. Khi em new 1 đối tượng , sẽ có một vùng nhớ được cấp phát trên heap.
Do em đặt ngoài vòng for, Nên chỉ có 1 vùng nhớ được cấp phát, khi em thay đổi giá trị trong vòng for thì cũng chỉ nằm trên vùng nhớ đó thôi, kết quả là em sẽ được 1 list các quân bài giống nhau.
Cho nên em cần new trong vòng for đó.
thanks anh.mà em làm cái sáo bài kiểu này nó ra rất nhiều chất trùng nhau
public void saobai()
> {
Random rd = new Random();
for (int i = 0; i < 51; i++)
{
int A = rd.Next(2, 12);
Console.Write(A + " ");
Console.WriteLine(lb[A].Chat);
}
}
Em nhớ đặt câu hỏi rõ ràng cho mong muốn của em nha: ghi tiêu để như vậy rất lười vào đọc.
Với lại đây là bài tập , em làm đã rồi hỏi. Em cho người khác thấy công sức em bỏ ra trước đã.
Yêu cầu 1 đã rõ : thuộc tính là bật và chất tạo class có 2 thuộc tính đó thôi, anh code = java em tham khảo:
Yêu cầu 2 thì tạo 1 lớp bao gồm:
-1 list danh sách bộ bài có kiểu là Card đã tạo ở trên.
-1 function dùng để tạo 52 là bài
-1 funcion để tráo là bài có tham số là số lần tráo bài, code java :
Cuối cùng là test thôi, code java:
các class với của anh @nguyenhuuca được liên kết với nhau như thế nào ạ, tạo các class như thế nào đó anh, em mới học java ạ
em chưa hiểu bài của anh lắm
chưa hiểu ý em lắm ? :d
chưa hiểu là chưa hiểu chỗ nào hi?
ý của em là khi anh tạo 1 cái class thì anh cài đặt cho nó những gì đó anh, ví dụ như trong hình em tạo class để chạy code của anh thì em stick những phần nào ạ
thực ra thì bài này em đã làm cũng gần giống anh nhưng khi em hiên cái list thì nó k ra,nhà mất mạng giờ mới lên được
mặc định như vậy là được rồi
sao lại writeLn cả cái object thế, từng cái thôi. màn write ra chắc cũng không đúng.
được rồi anh.nhưng trong C# không có cái hàm để đổi chỗ như java.em chưa biết làm sao
Có thể làm như thế này trong C# :
-Tạo một cái mảng random gồm 52 phần tử:(giá trị từ 0->51)
anh cho em hoi là sao phải đặt lb1 = new LaBai(); bên trong cái for nhỉ.em đặt ở bên trên nó không đúng
mà random thế nó ra cả ba mấy thì khớp cái kia kiểu gì ạ.anh có thể vi dụ cách trình bày cho e lần này được k
Bởi vì nó là reference type. Khi em new 1 đối tượng , sẽ có một vùng nhớ được cấp phát trên heap.
Do em đặt ngoài vòng for, Nên chỉ có 1 vùng nhớ được cấp phát, khi em thay đổi giá trị trong vòng for thì cũng chỉ nằm trên vùng nhớ đó thôi, kết quả là em sẽ được 1 list các quân bài giống nhau.
Cho nên em cần new trong vòng for đó.
thanks anh.mà em làm cái sáo bài kiểu này nó ra rất nhiều chất trùng nhau
em phải check trùng khi random chứ
như thế nào ạ
chán trả lời rồi nha , thinking thinking … : ))ref:
stackoverflow.com
Generate distinct random numbers in C#
3 class cái nào cũng mặc định vậy hả a, em làm như vậy bị lỗi này
chưa save class Card kìa chú :v