dúvida no for

10 respostas
FlavioA

Olá pessoal do GuJ sou iniciante em java e gostaria de tirar essa dúvida, esse algoritmo como vocês veem preenche dois vetores um de strings e outro de double
eu tentei fazer o preenchimento dos dois ao mesmo tempo, mas não deu certo no for interno do do while, por que quando entrar no for para preencher o vetor
de notas, ele não sai para o laço externo fica querendo preencher o vetor de notas todo. Tentei usar o break começou bem mas quando a condição do laço é atendida
ele para o algoritmo. Gostaria de saber como faço para esse for interno preencher um índice do vetor e voltar para o laço externo?

import javax.swing.JOptionPane;


public class VetorDeStringsENotas {

	
	public static void main(String[] args) {
		
		String numero = JOptionPane.showInputDialog("Digite o número ");
		int num = Integer.parseInt(numero);
		
		String[] nomes = new String[num];
		double[] notas = new double[num];
		String fim = "FIM";
		int i = 0;
		do{
		String nome = JOptionPane.showInputDialog("Digite o nome do aluno para o posicao "+i+" do vetor");
		nomes[i] = nome;
	
			for(int contador = 0; contador <=notas.length; contador++){
			String no = JOptionPane.showInputDialog("Digite a nota do aluno "+nomes[i]);
			double nota = Double.parseDouble(no);
			notas[contador] = nota;
			//como fazer um vez e voltar pra o do while?
			}
			i++;
			}while(i <=nomes.length);
		
		String pesNome = JOptionPane.showInputDialog("Digite o nome do aluno para receber a nota");
		for(int indice = 0;indice<=nomes.length; indice++){
			for(int j =0; j <= notas.length; j++){
			int posicao = pesNome.indexOf(indice);
			if(pesNome == nomes[indice] && posicao == notas[j]){
			JOptionPane.showMessageDialog(null,pesNome+" "+notas[j]);
			}
			else{
				JOptionPane.showMessageDialog(null, "Aluno não encontrado");
			}
			}
		}
	}
}

10 Respostas

jaboot
MarceloMVT
Eu acho legal colocar os códigos expostos dentro das tag de codigo:
import javax.swing.JOptionPane;

public class VetorDeStringsENotas {

    public static void main(String[] args) {

        String numero = JOptionPane.showInputDialog("Digite o número ");
        int num = Integer.parseInt(numero);

        String[] nomes = new String[num];
        double[] notas = new double[num];
        String fim = "FIM";
        int i = 0;
        do {
            String nome = JOptionPane.showInputDialog("Digite o nome do aluno para o posicao " + i + " do vetor");
            nomes[i] = nome;

            for (int contador = 0; contador <= notas.length; contador++) {
                String no = JOptionPane.showInputDialog("Digite a nota do aluno " + nomes[i]);
                double nota = Double.parseDouble(no);
                notas[contador] = nota;
//como fazer um vez e voltar pra o do while? 
            }
            i++;
        } while (i <= nomes.length);

        String pesNome = JOptionPane.showInputDialog("Digite o nome do aluno para receber a nota");
        for (int indice = 0; indice <= nomes.length; indice++) {
            for (int j = 0; j <= notas.length; j++) {
                int posicao = pesNome.indexOf(indice);
                if (pesNome == nomes[indice] && posicao == notas[j]) {
                    JOptionPane.showMessageDialog(null, pesNome + " " + notas[j]);
                } else {
                    JOptionPane.showMessageDialog(null, "Aluno não encontrado");
                }
            }
        }
    }
}
MarceloMVT

S

Seria algo assim:

int j = 0;
		loop1: do {
			System.out.println(j);
			for (int i = 0; i < 10; i++) {
				j++;
				continue loop1;
			}
		} while (true);
	}
vitordarela

Amigo, refaça essa sua lógica do FOR, você está complicando algo tão simples utilizando essa misturança de variável, e outra você está
esta colocand nomes na posição [i] sendo que o incremento (i++) está fora do FOR!

Eder_Peixoto

Olá Flávio,

Você está tentando fazer uma gambiarra pra resolver outra gambiarra. Primeiramente, siga as dicas anteriores do pessoal, e já aproveito pra dar outras:

  • Idente (aquele negócio de ir escrevendo o que está dentro de um bloco mais à direita) seu código, pois identação não é frescura, e ajuda que você e outras pessoas entendam melhor o código;

  • O do ([/b]do{}while();[b]) serve pra tarefas a serem realizadas antes de entrar no loop. No teu caso, não há tratamento especial que necessite desse recurso;

  • Quando se tratar de objetos (excluídos tipos primitivos), normalmente o uso do operador == não é o que se quer. Geralmente é usado o método equals(Object). Veja no teu código o seguinte trecho:

if (pesNome == nomes[indice] && posicao == notas[j]) {
  • Sei que no início já queremos sair usando componentes visuais, pois são bonitos e legais. Mas tenha em mente que o mais importante nesse momento é amadurecer o desenvolvimento da estrutura lógica da sua solução.
DaniloAndrade
public static void main(String[] args) {

		String numero = JOptionPane.showInputDialog("Digite o número ");
		int num = Integer.parseInt(numero);

		String[] nomes = new String[num];
		double[] notas = new double[num];

		for (int contador = 0; contador < num; contador++) {
			String nome = JOptionPane
					.showInputDialog("Digite o nome do aluno para o posicao "
							+ contador + " do vetor");
			nomes[contador] = nome;
			String no = JOptionPane.showInputDialog("Digite a nota do aluno "
					+ nomes[contador]);
			double nota = Double.parseDouble(no);
			notas[contador] = nota;

		}

		String pesNome = JOptionPane
				.showInputDialog("Digite o nome do aluno para receber a nota");
		for (int indice = 0; indice <= nomes.length; indice++) {

			if (pesNome.equals(nomes[indice])) {
				JOptionPane.showMessageDialog(null, pesNome + " "
						+ notas[indice]);
				break;
			}

			if (indice == nomes.length) {
				JOptionPane.showMessageDialog(null, "Aluno não encontrado");
			}

		}
	}

assim acho que fica melhor

FlavioA

Muito obrigado amigos pela colaboração de cada um de vocês, é muito bom pra nós iniciantes contar com vocês. Abraço e até a próxima.

bruno.prestes

Bom amigo, eu também sou iniciante em java estou estudando pela apostila da caelum e analisei o seu código e efetuei as seguintes modificações, verifique se é isso que o exercicio pede...

import javax.swing.JOptionPane;  
  
  
public class VetorDeStringsENotas {  
  
      
    public static void main(String[] args) {  
          
        String numero = JOptionPane.showInputDialog("Digite o número ");  
        int num = Integer.parseInt(numero);  
          
        String[] nomes = new String[num];  
        double[] notas = new double[num];  
        String fim = "FIM";  
        int i = 0;  
        do{  
            String nome = JOptionPane.showInputDialog("Digite o nome do aluno para o posicao "+i+" do vetor");  
            nomes[i] = nome;  
      
            for(int contador = 0; contador < notas.length; contador++){  
                String no = JOptionPane.showInputDialog("Digite a nota do aluno "+nomes[i]);  
                double nota = Double.parseDouble(no);  
                notas[contador] = nota;  
                break;
                //como fazer um vez e voltar pra o do while?  
            }
            i++;  
        } while(i < nomes.length);  
          
        String pesNome = JOptionPane.showInputDialog("Digite o nome do aluno para receber a nota");  
        for(int indice = 0;indice<=nomes.length; indice++){  
            for(int j =0; j <= notas.length; j++){  
            int posicao = pesNome.indexOf(indice);  
            if(pesNome == nomes[indice] && posicao == notas[j]){  
            JOptionPane.showMessageDialog(null,pesNome+" "+notas[j]);  
            }  
            else{  
                JOptionPane.showMessageDialog(null, "Aluno não encontrado");  
            }  
            }  
        }  
    }  
}
bruno.prestes

opssss.... faltou umas alterações nas comparações dos laços que percorrem os vetores abaixo vai a modificação...

import javax.swing.JOptionPane;  
  
  
public class VetorDeStringsENotas {  
  
      
    public static void main(String[] args) {  
          
        String numero = JOptionPane.showInputDialog("Digite o número ");  
        int num = Integer.parseInt(numero);  
          
        String[] nomes = new String[num];  
        double[] notas = new double[num];  
        String fim = "FIM";  
        int i = 0;  
        do{  
            String nome = JOptionPane.showInputDialog("Digite o nome do aluno para o posicao "+i+" do vetor");  
            nomes[i] = nome;  
      
            for(int contador = 0; contador < notas.length; contador++){  
                String no = JOptionPane.showInputDialog("Digite a nota do aluno "+nomes[i]);  
                double nota = Double.parseDouble(no);  
                notas[contador] = nota;  
                break;
                //como fazer um vez e voltar pra o do while?  
            }
            i++;  
        } while(i < nomes.length);  
          
        String pesNome = JOptionPane.showInputDialog("Digite o nome do aluno para receber a nota");  
        for(int indice = 0;indice<nomes.length; indice++){  
            for(int j =0; j < notas.length; j++){  
            int posicao = pesNome.indexOf(indice);  
            if(pesNome == nomes[indice] && posicao == notas[j]){  
            JOptionPane.showMessageDialog(null,pesNome+" "+notas[j]);  
            }  
            else{  
                JOptionPane.showMessageDialog(null, "Aluno não encontrado");  
            }  
            }  
        }  
    }  
}
Criado 21 de fevereiro de 2013
Ultima resposta 21 de fev. de 2013
Respostas 10
Participantes 8