Exercício Principiante

17 respostas
T

Ola a todos.
Sou novo por aqui e também estou começando a aprender a linguagem Java.
Na primeira aula de Java travei na parte do System.out.println.

Possui esta classe chamada Aluno, que ficou assim:

[i]public class Aluno {

private int ra;
private String nome;
private boolean matriculado=false;

public void setRa(int RA)
{
	this.ra = RA;
}

public int getRa ()
{
	return this.ra;
}


public void setNome(String Nome)
{
	this.nome = Nome;
}

public String getNome()
{
	return nome;
}


public void setMatriculado(boolean Matriculado)
{
	this.matriculado = Matriculado=true;
}

public boolean getMatriculado()
{
	return matriculado;
}

}[/i]

Meu código ficou assim (esta classe é para testar):

[i]import java.util.Scanner;

public class TesteAluno {

public static void main(String[] args) {
	
	Aluno aluno1 = new Aluno();
	aluno1.setRa(1);
	aluno1.setNome("Thiago");
	aluno1.setMatriculado(true);
	
	Scanner leitor = new Scanner (System.in);
	
	Aluno aluno2 = new Aluno();
	
    System.out.println("Digite o RA do aluno: ");
	int raAluno = leitor.nextInt();
	leitor.nextLine();
	
	System.out.println("Digite o Nome do aluno: ");   
	String nomeAluno = leitor.nextLine();
	leitor.nextLine();
	
	System.out.println("Cadastrar outro Aluno (S/N): ");
	String resp = leitor.nextLine();
	
	if (resp=="S")
	{
		aluno2.setMatriculado(true);
	}
	else
	{
		aluno2.setMatriculado(false);
	}

	System.out.println("\t RA do Aluno 1: " + aluno1.getRa());
	System.out.println("\n\t Nome do Aluno 1: " + aluno1.getNome());
	
}

}[/i]

Quando rodo este programinha ele deixa o usuário entrar com RA, Nome. Só que quando chega na última parte, da pergunta digito S de ‘Sim’ e aparece os dados do aluno 1.
Como faço para quando eu digitar ‘S’ aparecer novamente para eu digitar os dados de aluno?

Obrigado.
Att.
Thiago

17 Respostas

AnjoVingador

Use um laço de repetição um “while” por exemplo com uma condicional.
Quando for comparar valor de string use sempre “equals” e não “==”, pois este último compara se a variável de referência “aponta” para mesmo valor de outra string.
Se não ficou claro posso exemplificar é só falar.

mi.rodrigues

Quando for publicar linhas de código, utilize a tag code para facilitar a vida do pessoal aqui! Fica mais fácil de ajudar! :smiley:

freakazoid

Primeiramente seja bem vindo ao GUJ e leia isso.

A princípio o while resolve seu problema. Porem caso após a inclusão dos dados do 2° aluno o usuário quiser cadastrar mais algum aluno os dados serão sobrescritos.

Uma das possíveis soluções é aumentar um pouco o escopo do seu exercício, não limitando a quantidade de alunos que pode ser cadastrados.

Exemplo:

Aluno aluno= new Aluno();
ArrayList<Aluno> listaAlunos= new ArrayList<Alunos>();
String resp= "";
while(resp!= 'S'){

  System.out.println("Digite o RA do aluno: "); 
  aluno.setRA(leitor.nextInt()); 
  leitor.nextLine(); 

  System.out.println("Digite o Nome do aluno: "); 
  aluno.setNome( leitor.nextLine()); 
  leitor.nextLine();

  listaAlunos.add(aluno);

  System.out.println("Cadastrar outro Aluno (S/N): "); 
  resp = leitor.nextLine(); 

}

System.out.println("Fim");

Abs!

T

Bom dia.
Esse array não entendi, creio que ainda não cheguei/estudei nessa questão.

freakazoid

thedark.10013:
Bom dia.
Esse array não entendi, creio que ainda não cheguei/estudei nessa questão.

ArrayList é uma classe que faz implementação da interface List. Esta classe fornece métodos para manipular o tamanho da matriz que é usada internamente para armazenar uma lista. Podemos dizer bruscamente que é aproximadamente equivalente um vetor.

Desta formar você cadastra quantos objetos forem necessário sem se preocupar em dimensionar o vetor. Caso não queria fazer usando ArrayList, mude, crie um vetor do tipo Aluno.

//um vetor para armazenar 5 objetos do tipo Aluno [0-4]
Aluno[] listaAlunos= new Aluno[5];

listaAlunos[0]= new Aluno("Paulinho");
listaAlunos[1]= new Aluno("Ralf");
listaAlunos[2]= new Aluno("Pato");
listaAlunos[3]= new Aluno("Shaike");
listaAlunos[4]= new Aluno("Romarinho");

Caso tenha dificuldade post o código aqui.

Abs!

T

Neste caso vc esta especificando 5 alunos.
Aqui neste caso seria um ‘vetor dinâmico’, como ficaria a linha?

freakazoid

thedark.10013:
Neste caso vc esta especificando 5 alunos.
Aqui neste caso seria um ‘vetor dinâmico’, como ficaria a linha?

Ficaria como no primeiro exemplo, onde usamo o método add.

listaAlunos.add(aluno);
freakazoid
// Cria seu objeto
Aluno aluno= new Aluno();  
// Cria a lista dinâmica
ArrayList<Aluno> listaAlunos= new ArrayList<Alunos>();  
String resp= "";  

//Laço de repetição
while(resp!= "S"){  
  
  System.out.println("Digite o RA do aluno: ");   
  aluno.setRA(leitor.nextInt());   
  leitor.nextLine();   
  
  System.out.println("Digite o Nome do aluno: ");   
  aluno.setNome( leitor.nextLine());   
  leitor.nextLine();  
  
  // adiciona o objeto aluno na lista	
  listaAlunos.add(aluno);  
  
  System.out.println("Cadastrar outro Aluno (S/N): ");   
  resp = leitor.nextLine();   
  
}  
  
System.out.println("Fim");

Não precisa se preocupar em criar vários objetos do tipo Aluno para fazer o cadastro, pois neste caso ele é apenas um “coringa” para que possamos adicionar um objeto no array.

T

da um erro de ‘ArrayList cannot be resolved to a type’?

freakazoid

Exemplo:

public class TesteLoko {

	public static void main(String[] args) {

		Scanner leitor = new Scanner(System.in);
		String resp = "";
		Aluno aluno;
		ArrayList<Aluno> listaAlunos = new ArrayList<Aluno>();

		while (!resp.equals("N")) {

			aluno = new Aluno();
			System.out.print("Digite o RA do aluno: ");
			aluno.setRa(leitor.nextInt());
			leitor.nextLine();

			System.out.print("Digite o Nome do aluno: ");
			aluno.setNome(leitor.nextLine());
			leitor.nextLine();

			//Adiciona
			listaAlunos.add(aluno);

			System.out.print("Cadastrar outro Aluno (S/N)?: ");
			resp = leitor.nextLine();

			aluno= null;
		}
		
		//Exibindo
		System.out.println("Aluno(s) Cadastrado(s):");
		
		for (Aluno aluno2 : listaAlunos) {
			
			System.out.println(aluno2.getNome());
			
		}

	}

}

Abs!

T

Certo, mas quando executo da esta mensagem:
‘ArrayList cannot be resolved to a type’

freakazoid

thedark.10013:
Certo, mas quando executo da esta mensagem:
‘ArrayList cannot be resolved to a type’

Provavelmente esse erro dá quando vc esta tentando usar o add, correto? De qualquer forma, o exemplo que postei foi feito em cima do bean que vc postou, é só copiar e colar na sua classe de teste que deve funcionar com certeza.

Se o erro persistir é só dar um toque.

Abs!

T

Deu certo, estava faltando a biblioteca. rs
Então quando aperto S ele deixa eu digitar novamente, deu certo, mas quando eu aperto N em vez de exibir a lista ja cadastrada e encerrar ele continua.

freakazoid

Use o ‘N’ ou invés de ‘n’.
Para para funcionar com os dois é só alterar a condição do while para:

while (!resp.toUpperCase().equals("N")) {

Abs!

T

N maiusculo, muito detalhes…hehe Valew cara, qualquer coisa eu te procuro.

T

Esse comando ‘toUpperCase’ o que é?
Eu estava tentando colocar or ||

freakazoid

thedark.10013:
Esse comando ‘toUpperCase’ o que é?
Eu estava tentando colocar or ||

Da pra fazer com or, tipo ou ‘n’ ou ‘N’, porem desta forma estamos fazendo implicitamente dois ifs. O toUpperCase transforma todo conteúdo da String e passa pra maiúsculo, dessa forma eu faço um verificação só.

Criado 13 de março de 2013
Ultima resposta 18 de mar. de 2013
Respostas 17
Participantes 4