Não é incômodo, o importante e que você aprenda…
sim, Obrigado fernandosavio estou continuando aqui.
agora falta fazer a classe principal que tem a main
onde tenho que solicitar o tamanho Max do vetor
Um menu para inserir os dados, classificar e listar o vetor.
vou continuando aqui Thank
peso ajuda novamente porque eu na classe principal nao estou conseguindo o metodo listar e o metodo bolha em cada opçao no pequeno menu.
//metodo listar
public void listagem() {
for (int aux = 0; aux < i; aux++) {
System.out.println("Vetor [" +pessoa[aux].nome +"]");
//((Pessoa) pessoa[aux]).mostrarPessoa();
[code]// metodo bolha
public void bolha() {
for (int i = 0; i < (pessoa.length - 1); i++) {
if (pessoa[i].lenght > pessoa[i + 1].lenght) {//alterei o codigo
Pessoa aux = pessoa[i + 1];
pessoa[i + 1] = pessoa[i];
pessoa[i] = aux;[/code]
[code]public class ClassePrincipal {
public static void main(String[] args) {
Pessoa v1 = new Pessoa(null,100);
Scanner entrada = new Scanner(System.in);
int opcao;
System.out.println("\n Escolha uma Opçao ");
System.out.println("(1) Listar ");
System.out.println("(2) Bolha ");
opcao = entrada.nextInt();
switch(opcao){
case 1:
break;
case 2:
v1.
break;
default:
}[/code]
aqui esta o problema agora ja alterei nas outras classes so nao estou conseguindo chamar na 1 opcao o metodo listar e 2 o mtodo bolha para ordenar, so consigo v1.mostrarPessoa(); so me da opacao desse metodo.
Em que classe está o método bolha e o listagem ???
Esses metodos estao dentro dessa classe: public class VetorDePessoas{ postei elas logo no começo as duas classes … public class Pessoa {
[code]public class Pessoa {
String nome;
int[] altura;
public int lenght;
public Pessoa(String n, int a) {
this.nome = n;
altura = new int[a];
}
public int Altura(){
return altura.length;
}
//metodo mostrar pessoa
//public void mostrarPessoa(){
//System.out.println("Nome: " + nome + "Altura" +altura);
//}
//public void mostrarPessoa() {
//System.out.println("Nome: " + nome + "Altura" +altura);
//}
}
[/code]
[code]public class VetorDePessoas {
// public Pessoa[] pessoa = new LinkedList<Pessoa>();
Pessoa[] pessoa;
private int i = 0;
// construtor
/**
* @param tamanhoMax
*/
public VetorDePessoas(int tamanhoMax) {
pessoa = new Pessoa[tamanhoMax];
}
// metodo insere
public void inserir(Pessoa pessoas) {
if (i < pessoa.length) {
pessoa[i++] = pessoas;
}
}
//metodo listar
public void listagem() {
for (int aux = 0; aux < i; aux++) {
System.out.println("Vetor [" +pessoa[aux].nome +"]");
//((Pessoa) pessoa[aux]).mostrarPessoa();
}
}
// metodo bolha
public void bolha() {
for (int i = 0; i < (pessoa.length - 1); i++) {
if (pessoa[i].lenght > pessoa[i + 1].lenght) {
Pessoa aux = pessoa[i + 1];
pessoa[i + 1] = pessoa[i];
pessoa[i] = aux;[/code]
essas duas classes
Cara… ficou muito confusa sua classe… Tem length onde nao precisava, tem vetor onde não precisa…
Eu fiz um exemplo rápido aqui para você ver…
Classe Pessoa:
[code]
public class Pessoa {
public String nome;
public double altura;
public Pessoa(String nome, double altura) {
this.nome = nome;
this.altura = altura;
}
}[/code]
Classe OrdenaBolha.java:
[code]public class OrdenaBolha {
public static void main(String args[]) {
//Inicializa vetor de pessoas
Pessoa[] listaPessoas = new Pessoa[]{
new Pessoa("pessoa1",1.70),
new Pessoa("pessoa2",1.50),
new Pessoa("pessoa3",1.90),
new Pessoa("pessoa4",2.00),
new Pessoa("pessoa5",1.80)
};
metodoBolha(listaPessoas); //ordena o Vetor
imprimePessoas(listaPessoas); //imprime o Vetor
}
public static void metodoBolha(Pessoa[] variasPessoas){
for (int i = 0; i < variasPessoas.length-1; i++) {
if (variasPessoas[i].altura > variasPessoas[i + 1].altura) {
Pessoa aux = variasPessoas[i + 1];
variasPessoas[i + 1] = variasPessoas[i];
variasPessoas[i] = aux;
}
}
}
public static void imprimePessoas(Pessoa[] muitasPessoas){
for(int i=0 ; i<muitasPessoas.length ; i++){
System.out.print("Nome: " + muitasPessoas[i].nome);
System.out.println("\tAltura: " + muitasPessoas[i].altura + "m");
}
}
}[/code]
Você está complicando a estrutura das suas classe. Olha essas para ter uma idéia, qualquer pergunta sobre o código pode chamar!
vou tentar aqui arrumar o codigo se nao conseguir continuo amanha obrigado fernandosavio. estou em cima disso faz horas.
fernandosavio tentei seguir seu codigo aqui me perdi ja nao estou entendendo nada, nao consigo chamar os metodos como voçe chamou bom eu preciso fazer 3 classes : 1 classe Pessoa, 2 classeVetorDePessoas, 3 classe Principal onde contem a main.
a classe1 e so a definição da interface.
eu preciso fazer um menu para usuario escolher e hora que vou chamar o metodo para lista ou na opcao 2 para ordenarpelo metodo bolha nao da.
public class ClassePrincipal {
public static void main(String[] args) {
//inicializa o vetor de pessoas
VetorDePessoas[] listapessoa = new VetorDePessoas[ ]{
new VetorDePessoas("JOao", 1.80),
new VetorDePessoas("Antonio", 1.65),
new VetorDePessoas("Pessoa ", 2.00),
new VetorDePessoas("Fullano", 1.70)
};
Scanner entrada = new Scanner(System.in);
int opcao;
System.out.println("\n Escolha uma Opcao ");
System.out.println("(1) Listar ");
System.out.println("(2) Bolha ");
opcao = entrada.nextInt();
switch(opcao){
case 1:
lis
break;
case 2:
break;
default:
}
}
}
public class VetorDePessoas {
............
public void bolha() {
for (int i = 0; i < (variasPessoas.length - 1); i++) {
if (variasPessoas[i].Altura > variasPessoas[i + 1].Altura) {
Pessoa aux = variasPessoas[i + 1];
variasPessoas[i + 1] = variasPessoas[i];
variasPessoas[i] = aux;
public void listaPessoas(){
for(int i=0; i < variasPessoas.length; i++){
System.out.println("\nNome "+ variasPessoas[i].Nome);
System.out.println("\n Altura "+ variasPessoas[i].Altura);
}
}
a classe Pessoa nem esta sendo usada creio deu dessa forma.
de qualuqer forma muitissimo obrigado pela ajuda so estou confuso.
boolean swap = false;
do {
for(int i = 0; i < vetor.length - 1; i++) {
if(pessoa[in].altura > pessoa[in + 1].altura) {
// faz o swap
swap = true;
}
}
} while(swap);
olivercld não faz sentido ter uma classe VetordePessoas… Faz mais sentido ter um vetor de objetos Pessoas…
Se você puder postar o enunciado da questão ficaria melhor de entender o que ela pede…
aqui esta como me pediu fernandosavio
fiz de um jeito não da erro mais não da certo faço de outro da erro aff.
Muito bem cara… Me prestei a fazer para você o exercício. Mas é muito importante que você leia e tente entender o que eu fiz…
OK, vamos lá.
Classe Pessoa
/*
Criar uma classe Pessoa que armazene o nome e a altura de uma pessoa. Esta classe deverá
possuir os métodos:
construtor ? instancia o objeto com o nome e a altura da pessoa;
altura ? retorna a altura de uma pessoa;
mostra ? apresenta o nome e a altura da pessoa;
*/
public class Pessoa {
private String nome;
private double altura;
public Pessoa(String nomeRecebido, double alturaRecebida) {
this.nome = nomeRecebido;
this.altura = alturaRecebida;
}
public double getAltura(){
return this.altura;
}
public void mostraPessoa(){
System.out.println("Nome: " + this.nome + "\tAltura: " + altura);
}
}
Classe VetorDePessoas
/*
Criar uma classe ?VetorDePessoas? que armazene um vetor de pessoas (o tamanho máximo do
vetor deve ser passado no programa principal). A classe deverá possuir os métodos:
construtor ? define o tamanho máximo do vetor;
insere ? insere uma nova pessoa no vetor;
listagem ? mostra todas as pessoas cadastradas no vetor;
classifica - utiliza um dos métodos de classificação para ordenar o vetor pela altura das pessoas.
*/
public class VetorDePessoas {
private int tamanhoMax;
public int ultimoInserido = 0;
private Pessoa[] listaPessoas;
public VetorDePessoas(int tamanho) {
this.tamanhoMax = tamanho;
listaPessoas = new Pessoa[tamanho];
}
public void insere(Pessoa p){
if(ultimoInserido < tamanhoMax){
listaPessoas[ultimoInserido] = p;
ultimoInserido++;
}
}
public void listagem(){
for(int i=0 ; i<ultimoInserido ; i++){
listaPessoas[i].mostraPessoa();
}
}
public void ordena(){
boolean houveTroca;
do {
houveTroca = false;
for(int i = 0; i < ultimoInserido-1; i++) {
if(listaPessoas[i].getAltura() > listaPessoas[i+1].getAltura()) {
Pessoa aux = listaPessoas[i];
listaPessoas[i] = listaPessoas[i+1];
listaPessoas[i+1] = aux;
houveTroca = true;
}
}
} while(houveTroca); //Se percorreu o vetor inteiro e não precisou trocar é porque já está ordenado
}
}
Classe Principal
/**
Criar um programa principal que mostre ao usuário:
No início do programa solicitar o tamanho máximo do vetor
Um menu para inserir os dados, classificar e listar o vetor
*/
import java.util.Scanner;
public class Principal {
public static void main(String args[]) {
System.out.print("Digite o tamanho do vetor: ");
Scanner in = new Scanner(System.in);
int tam = in.nextInt();
VetorDePessoas vetPes = new VetorDePessoas(tam);
int opcao;
do{
System.out.print("\n1-Inserir dados\n2-Ordenar dados\n3-Mostrar dados\nOpcao: ");
opcao = in.nextInt();
switch(opcao){
case 1:
vetPes.ultimoInserido = 0;
for(int i=0 ; i<tam ; i++){
System.out.print((i+1)+"-Digite o nome: ");
String nome = in.next();
System.out.print((i+1)+"-Digite a altura: ");
double altura = in.nextDouble();
vetPes.insere(new Pessoa(nome,altura));
}
break;
case 2:
vetPes.ordena();
break;
case 3:
vetPes.listagem();
break;
case 0:
break;
default:
System.out.print("Opcao nao existe!");
break;
}
}while(opcao!=0);
}
}
Tenta entender o que eu fiz e qualquer coisa pergunta!
ok eu vou comentar, tentar explicar colocando comentarios no codigo seu ai posto aqui denovo e tu me fala se esta certo como comentei da maneira que entendi ok valeu fernandosavio obrigadão fera.
[code]public class Pessoa {
private String nome; // atributos da classe
private double altura;
/**
* @author fernandosavio
* @param nomeRecebido
* @param alturaRecebida
*/
// construtor, ele recebe como parametro nomeRecebido e alturaRecebida
public Pessoa(String nomeRecebido, double alturaRecebida) {
this.nome = nomeRecebido;
this.altura = alturaRecebida;
}
//public String getNome() {
//return nome;
//}
//public void setNome(String nome) {
// this.nome = nome;
//}
//public void setAltura(double altura) {
// this.altura = altura;
//}
// metodo para retorna a altura
public double getAltura() {
return this.altura;
}
// metodo para mostrar os nomes e a altura das pessoas
public void mostraPessoa() {
System.out.println("Nome: " + this.nome + "\tAltura: " + altura);
}
} [/code]
[code] public class VetorDePessoas {
// atributos publico e privado
private int tamanhoMax; // definindo tamanho maximo
public int ultimoInserido = 0; // ??
private Pessoa[] listaPessoas; // cria se o vetor
/**
* @author fernandosavio
* @param tamanho
*/
// construtor
public VetorDePessoas(int tamanho) {
this.tamanhoMax = tamanho;
listaPessoas = new Pessoa[tamanho];// objeto ListasPessoas = new Pessoa
}
// metodo insere para inserir uma lista de pessoas no meu vetor
public void insere(Pessoa p) { // Pessoa p e criada um novo parametro p
if (ultimoInserido < tamanhoMax) { // se ultimoinserido menor que
// tamanho max
listaPessoas[ultimoInserido] = p; // ??
ultimoInserido++; // ultimo a ser inserido incrementa
}
}
// metodo listagem para listar as pessoas com nome a altura
public void listagem() {
for (int i = 0; i < ultimoInserido; i++) { // i de 0 ate < que o ultimo
// elemento
listaPessoas[i].mostraPessoa();// listaPessoas na posicao i aponta,
// recebe metodo mostraPessoa
}
}
// metodo bolha ordena o vetor de pessoas por altura
public void ordena() {
boolean houveTroca;// boolen para verificar se e verdadeiro ou falso
do {
houveTroca = false;// verifica se houve troca no caso e falso
for (int i = 0; i < ultimoInserido - 1; i++) {
// para int i de 0 ate i menor que ultimo -1, o ultimo -1
// significa que e o ultimo elemento.?
if (listaPessoas[i].getAltura() > listaPessoas[i + 1]
.getAltura()) {
// se listaPessoas na posicao tal "compara pelo metodo
// altura", for maior que listaPessoas na posicao i + 1 que
// a segunda posicao
// se for maior entao troca
Pessoa aux = listaPessoas[i];// vetor Pessoa aux armazena o
// valor na posicao i caso
// for maior para trocar
listaPessoas[i] = listaPessoas[i + 1];
listaPessoas[i + 1] = aux;
houveTroca = true;//mostra que houve a trova e verdadeira
}
}
} while (houveTroca); // Se percorreu o vetor inteiro e não precisou
// trocar é porque já está ordenado
}
} [/code]
[code] /**
-
@author fernandosavio
*/
import java.util.Scanner;
public class ClassePrincipal {
public static void main(String args[]) {
// pede para usuario digitar um tamanho do vetor
System.out.print("Digite o tamanho do vetor: ");
Scanner in = new Scanner(System.in);// le do teclado
int tam = in.nextInt();// tam recebe valor que usuario digitou
// cria o vetor VetorDePessoas vetPes que recebe como valor tam o que
// usuario digitou
VetorDePessoas vetPes = new VetorDePessoas(tam);
int opcao;
do {//faz o analise enquanto opcao for diferente de zero
System.out
.print("\n1-Inserir dados\n2-Ordenar dados\n3-Mostrar dados\nOpcao: ");
opcao = in.nextInt();
switch (opcao) {
case 1:
vetPes.ultimoInserido = 0;// o objeto vetPes aponta, recebe o
// ultimoInserido ??
for (int i = 0; i < tam; i++) {
// para int i ate menor que tamaho que usuario digitou
System.out.print((i + 1) + "-Digite o nome: ");// i + 1
// incrementa ate chegar ao tamanho que usuario digitou no tam
String nome = in.next();
System.out.print((i + 1) + "-Digite a altura: ");
double altura = in.nextDouble();
vetPes.insere(new Pessoa(nome, altura));// ??
}
break;
case 2:
//opcao 2 ira ordenar pelo metodo bolha
vetPes.ordena();
break;
case 3:
//ira listar pelo metodo listagem
vetPes.listagem();
break;
case 0: //para fazer o analise enquanto for diferente de 0. ?
break;
default:
System.out.print("Opcao nao existe!");
break;
}
} while (opcao != 0);
}
} [/code]
Poderia analisar os comentários fernandosavio se esta de acordo, como eu comentei foi modo que procurei entender e onde eu coloquei apenas o ponto de interrogação ?? é onde está a duvida que não entendi muito bem.
muito obrigado desde já pela sua paciência de me explicar.
No guardo de suas resposta quanto ao comentários no código.
so uma obs: no seu codigo aqui fernandosavio, depois de comentar, fui executar e quando optei pela opçao 2 que ordenar pelo metodo bolha, nao deu certo, ou seja aparece para mim o menu novamente no caso o case 2: nao esta dando certo