[Resolvido] ArrayList

tenho uma duvida, nao sei onde eu crio ArrayList<>
exemplo a escola com umas 10 crianças e depois imprimí-los e tela;
Escola: -
Alunos:

fiz simples assim:

import javax.swing.JOptionPane; public class Principal { public static void main(String[] args){ Alunos.setNome(JOptionPane.showInputDialog(null, "escreve seu nome")); Alunos.setSexo = JOptionPane.showInputDialog(null, "Insira o sexo do Candidato com apenas um caracter." +"\nM - Masculino"+"\nF - Feminino").charAt(0); switch (Alunos.setSexo){ case 'm': JOptionPane.showMessageDialog(null, "Masculino"); break; case 'f': JOptionPane.showMessageDialog(null, "Femenino"); break; case 'M': JOptionPane.showMessageDialog(null, "Masculino"); break; case 'F': JOptionPane.showMessageDialog(null, "Femenino"); break; default: JOptionPane.showMessageDialog(null, "sexo inválido"); break; } Alunos.setIdade = Integer.parseInt(JOptionPane.showInputDialog(null, "qual é sua idade")); Principal p = new Principal(); if (p.ehMaior()) { JOptionPane.showMessageDialog(null, "você é Adulto(a)"); } else { JOptionPane.showMessageDialog(null, "você é Criança"); } JOptionPane.showMessageDialog(null, "Nome: "+Alunos.getNome()+"\n Idade: "+Alunos.setIdade+"\n sexo: "+Alunos.setSexo); } boolean ehMaior() { boolean ehMaior = false; if (Alunos.getIdade() <= 18) {ehMaior = true;} else {ehMaior = false;} return ehMaior; } }

public class Alunos { private static String nome; private static int idade; private static char sexo; public static char setSexo; public static int setIdade; public Alunos (String nome, char sexo, int idade) { Alunos.setNome(nome); this.setSexo(sexo); this.setIdade(idade); } public static void setNome(String nome) { Alunos.nome = nome; } public static String getNome() { return nome; } public void setSexo(char sexo) { Alunos.sexo = sexo; } public static char getSexo() { return sexo; } public void setIdade(int idade) { Alunos.idade = idade; } public static int getIdade() { return idade; } }

Oi!

Rapaz, porque tentou criar um objeto que seria imutavél e ao mesmo tempo dando acesso estático ao contéudo das variaveis?
Não se faz isso não, está parecendo algo procedural e não java.

Ou faça passando os valores no construtor da classe Aluno e construa os gets (sem ser estático) ou cria os métodos get e set e seja acessados via instância!
Sobre lista, seria:

List<Aluno> alunos = new ArrayList<Aluno>();
alunos.add(aluno);

Abraços.

Bruno,

Segue um refactory no seu código:

Principal.java

public class Principal {
	
	public static void main(String[] args) {
		Aluno aluno = null;
		List<Aluno> alunos = new ArrayList<Aluno>(); // aqui está a lista
		Integer quantidadeAlunos = new Integer(JOptionPane.showInputDialog(null, "Deseja inserir quantos alunos?"));
		
		for (int i = 0; i < quantidadeAlunos; i++) {
			aluno = new Aluno();
			aluno.setNome(JOptionPane.showInputDialog(null, "Escreva seu nome"));
			aluno.setSexo(JOptionPane.showInputDialog(null, "Insira o sexo do Candidato com apenas um caracter."
														+ "\nM - Masculino" + "\nF - Feminino").charAt(0));
			aluno.setIdade(Integer.parseInt(JOptionPane.showInputDialog(null, "Qual é sua idade")));
			
			alunos.add(aluno);
		}
		
		imprimirValores(alunos);
	}

	private static void imprimirValores(List<Aluno> alunos) {
		for (Aluno umAluno : alunos) {
			JOptionPane.showMessageDialog(null, "Nome: " + umAluno.getNome()
					+ "\n Idade: " + umAluno.getIdade() + "\n sexo: " + umAluno.getDescricaoSexo());
			
			if (umAluno.isMaior()) {
				JOptionPane.showMessageDialog(null, "você é Adulto(a)");  
			} else {
				JOptionPane.showMessageDialog(null, "você é Criança");  
			}
		}
	}
	
}

Aluno.java

public class Aluno {
	
	private String nome;
	private int idade;
	private char sexo;
	
	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public int getIdade() {
		return idade;
	}
	
	public void setIdade(int idade) {
		this.idade = idade;
	}
	
	public char getSexo() {
		return sexo;
	}
	
	public void setSexo(char sexo) {
		this.sexo = sexo;
	}
	
	public boolean isMaior() {
		return idade > 18;
	}
	
	public String getDescricaoSexo() {
		String descricao = null;
		
		switch (sexo) {
		case 'm':
		case 'M':
			descricao = "Masculino";
			break;
		case 'f':
		case 'F':
			descricao = "Feminino";
			break;
		default:
			descricao = "Sexo inválido";
			break;
		}
		
		return descricao;
	}
	
}

Ainda está um pouco longe do ideal, mas já trabalha com lista e arranca os seus estáticos desnecessários.

Att.

Reforçando outros detalhes: agora o objeto aluno é capaz de saber se é maior e também conhece a descrição do seu sexo.

Você pode eliminar a quantidade no início também, incluí apenas para ficar mais fácil.

Mas o mais importante agora é você identificar o que mudou e porque mudou.

Qualquer dúvida, manda aí.

Att.

muito obrigado, entendi perfeito !
ta resolvido!