webForumDet fria alternativet

Kortleksklass, skärmen blir enbart svart...

4 svar · 526 visningar · startad av Blårand

BlårandMedlem sedan jan. 20032 356 inlägg
#1

Har i nedanstående klass skapat en "kortlek" innehållande 52 kortobjekt ur klassen "kort". I klassen så skapas och blandas kortleken enligt kod längre ned på sidan.

I klassen TestaKortlek så skapar jag ett kortleksobjekt som jag sedan försöker läs korten ur. Men det ända som händer är att skärmen visar helt svart, coh jag vet inte hur jag ska åtgärda problemet.

Om ni vill får ni gärna kika på kodsnuttarna nedan och se om ni kan se vad som är fel, och vad jag ska göra för att undvika felet.

import java.io.*;

class TestaKortlek
{

	public static void main(String args[]) throws IOException
	{
	Kortlek kortlek1 = new Kortlek();

	for (int d=0; d<=12; d++)
		{
			System.out.println(kortlek1.delaUtEttKort(d).getKortvarde() + " - " + kortlek1.delaUtEttKort(d).getKortfarg());
		}

	}

}
import java.io.*;
import java.util.Random;

class Kortlek
{

	// Klassens attribut
	Kort[] arrBlandadKortlek = new Kort[52];
	
	// Klassens konstruktor
	Kortlek()
	{
		skapaKortlek();

	}

	// Skapar och blandar kortlek
	private void skapaKortlek()
	{
		Kort[] arrKortlek = new Kort[52];
		String[] arrFarger = new String[4];
		int k=0, h=0, intSlumpnr;

		Random generator = new Random();
		arrFarger[0]="H";
		arrFarger[1]="R";
		arrFarger[2]="K";
		arrFarger[3]="S";

		for (int c=0; c<4; c++)
		{
			for (int p=2; p<15; p++)
			{
				arrKortlek[k]= new Kort(arrFarger[c],p,k+1);
				k++;
			}
		}

		while(h<52)
		{
			intSlumpnr=generator.nextInt(51)+1;

			if(arrKortlek[intSlumpnr] != null)
				{
					arrBlandadKortlek[h]=arrKortlek[intSlumpnr];
					arrKortlek[intSlumpnr]=null;
					h++;
				}
		}
	}

		public Kort delaUtEttKort(int kort)
		{
			return arrBlandadKortlek[kort];
		}

}
BlårandMedlem sedan jan. 20032 356 inlägg
#2

Löste problemet på egen hand.

Egentligen borde väl kanske tråden raderas, men jag publiceras ändå lösningen i fall det skulle vara av intresse för någon.

Då kortleken ska blandas så ska programmet hålla på tills en array är fylld med 52 platser/kort. Raden intSlumpnr=generator.nextInt(51)+1; slumpar dock inte fram tal mellan 0-51 varav arrayen aldrig kan bli helt full, och scriptet fortsätter i all oändlighet.

Men nu är det löst.

PeWMedlem sedan juni 200010 432 inlägg
#3

scriptet fortsätter i all oändlighet.

Scriptet?

BlårandMedlem sedan jan. 20032 356 inlägg
#4

PeW skrev:

scriptet fortsätter i all oändlighet.

Scriptet?

Kodsnutten, programmet eller vad det akademiska ordet nu heter i javakretsar.

Men du förstod nog vad jag menade. ;)

PeWMedlem sedan juni 200010 432 inlägg
#5

Jo, men eftersom det finns något som heter JavaScript, vilket inte din kod är, kan det vara på plats med lite språkpolisiära åtgärder ;)

126 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)