Imprimir todas as cartas de um baralho

14 respostas
java
C

Olá.

Estou tentando criar um programa que imprima todas as 52 cartas do baralho, do 1 até o 10 e com todos os naipes (Paus, Ouros, Copas, Espadas) e também imprimir as cartas Valete, Dama e rei.

Achei o uso do “for” mais apropriado nesse caso, porém não tenho muito conhecimento com funções de repetições, gostaria de saber como imprimir uma “String” utilizando o “for”?

Estou utilizando essa lógica mas ela não é muito prática, pois está imprimindo só até o número 4, poderiam me ajudar a imprimir o restante dos números? E adicionar o “valete, dama e rei” ?

public class Baralho {
public static void main(String[] args) {

int numeroCartas[] = {1,2,3,4,5,6,7,8,9,10};
	
	String naipesCartas[] = {"Copas","Ouros","Espadas","Paus"};
	
	int i;
		for(i=0; i<4; i++) {
			System.out.printf("%d de %s.\n", numeroCartas[i], naipesCartas[i] );
		}

	}
}

14 Respostas

F

Opa, Cesar! Tranquilo?

Então, ele tá imprimindo até o 4 por que você fez ele imprimir até o quatro na condição do For. O for funciona assim:

para ( variavel =0; enquanto a variavel não atingir essa condição; ação)

Ou seja:

para (i começando em 0; enquanto i for menor que 4; i acresce um)

Seu laço tá imprimindo da seguinte forma:

1 de Copas.
2 de Ouros.
3 de Espadas.
4 de Paus.

Isso por que ele tá executando, nesse for, isso aqui:

numeroCartas[0] e naipesCartas[0]
numeroCartas[1] e naipesCartas[1]
numeroCartas[2] e naipesCartas[2]
numeroCartas[3] e naipesCartas[3]

O que você precisa executar é

numeroCartas[0] e naipesCartas[0]
    numeroCartas[0] e naipesCartas[1]
    numeroCartas[0] e naipesCartas[2]
    numeroCartas[0] e naipesCartas[3]
    numeroCartas[1] e naipesCartas[0]
    numeroCartas[1] e naipesCartas[1]
    numeroCartas[1] e naipesCartas[2]
    numeroCartas[1] e naipesCartas[3] [...]

Conseguiu visualizar melhor?

Dica: Você vai precisar de um for dentro do outro!

Ah, não esquece que os vetores no Java são zero-based, ou seja, eles não começam na posição 1!

C

Eita rs Agora complicou, mas vou tentar aqui, já não sei usar muito bem o for , imagine usar um dentro do outro, mas obrigado pela dica !

F

Certo, a dica final que posso te dar é:

Use a variável i para um for, e uma outra variável (com nome que vc quiser, eu geralmente uso j) para outro for.

C

Consegui !!! Obrigado pela dica, foi essencial !

F

Por nada :slight_smile:

[]'s

S

Não tem mistério:

int[] numeroCartas = { 1,2,3,4,5,6,7,8,9,10 };
String[] naipesCartas = { "Copas","Ouros","Espadas","Paus" };

for (String naipe : naipesCartas) {
    for (int numero : numeroCartas) {
        System.out.printf("%d de %s.%n", numero, naipe);
    }
}
C

Dessa maneira ele imprime de 1 à 10 em um naipe, depois de 1 à 10 em outro naipe.
O objetivo seria:

1 de Copas
1 de Ouros
1 de Espadas
1 de Paus
2 de Copas

Quais alterações eu teria que fazer nesse código para conseguir executar dessa maneira ? e qual a função do “:” no for ?

F

Cesar, o for com : é conhecido como foreach. Isso é, “for para cada elemento em x”. É um conceito que deve ser estudado.

P

por acaso o for each foi introduzido no Java 1.5, junto de Generics e outras belezinhas. tem quase uma década.

F

Doideira. As faculdades de hoje ensinam foreach?

P

Doideira

S

É só trocar a ordem dos laços. :neutral_face:

for (int numero : numeroCartas) {
    for (String naipe : naipesCartas) {
        System.out.printf("%d de %s.%n", numero, naipe);
    }
}
S

Como diria o Tank: Neo, this is loco.
(Matrix - 1996)

Então, se você pegar um professor que não parou no tempo, provavelmente ele vai ensinar esse recurso do Java que já existe há 14 anos. :smiley:

Quando fiz Ciência da Computação, tive uma disciplina chamada “Linguagens para Programação de Sistemas”, onde aprendíamos algumas características e recursos de diferentes linguagens.
Frequentemente o professor lançava uns desafios, como por exemplo, implementar um algoritmo utilizando tipos genéricos de dados, aí o aluno que decidia a linguagem em que iria fazer. Lembro de ter feito em Java e em C++ para ilustrar as diferenças na sintaxe.

Fora isso, nas disciplinas de “Introdução à Programação” e “algoritmos”, nunca fora utilizado um foreach ou um tipo genérico.

P

Eu tive Pascal e Fortran 77 na faculdade.
Precisei aprender C com uma apostila on-line.

Assim: se o cara quer ensinar programação estruturada, ou OO, tem muitas opções disponíveis mas os professores precisam se atualizar

Criado 17 de outubro de 2018
Ultima resposta 19 de out. de 2018
Respostas 14
Participantes 4