Duvida Iniciante

7 respostas
P

Foristas, sou novo no fórum e iniciante em Java.
Meu programa nao está compilando, alguem sabe qual o erro? Nunca programei antes na vida. Dei uma lida no livro e nao achei nada,
sei que deve ser um erro simples, mas nao consigo identificar.
Agradeço desde já quem me ajudar.

public void mostra()
	{

		for (int i = 0;i<v.length;i++)
		{
			(lin = lin + v[i] + "  "); 
			JOptionPane.showMessageDialog(null,lin); 
			
		}
	
	}

Aqui o programa completo

import javax.swing.*;
//importa clase

public class Busca
{
	private int v[];

	public Busca(int tam)
	{
		v= new int[tam];
		
	} 
 	public void mostra()
	{
		//sempre o mesmo espaçamento para identar
		for (int i = 0;i<v.length;i++)
		{
			(lin = lin + v[i] + "  "); //estamos colocando as aspas no meio do programa para dar um espaço.
			JOptionPane.showMessageDialog(null,lin); //tem que sempre colocar um null e depois o lin de linha
			
		}
	
	}
   
   
   public void insere()
	{
		for (int i = 0;i<v.length;i++)
		v[i]=Integer.parseInt(JOptionPane.showInputDialog("entre o valor"));
	}
	public int buscaSeq(int valor)
	{

		for(int i=0;i<v.length;i++)
			{
			if(v[i]==valor)
				{
					return i;
				}
			return -1;
			}
	}
}

7 Respostas

pmlm

Peduckk:
(lin = lin + v[i] + " ");

O que é esse lin?

F

Amigo, olhando por cima identifiquei dois problemas.

  1. Já relatado pelo pmlm. você não declarou o lin.
(lin = lin + v[i] + "  ");
  1. o método buscaSeq deve dar problema pois não tem um return no local correto. O seu método muito provavelmente deve dar erro de compilação por não achar o return

tente colocar o código abaixo. Apenas revise para ver se está certo mesmo.

public int buscaSeq(int valor)  {  
    for(int i=0;i<v.length;i++){  
        if(v[i]==valor) {  
            return i;  
        }  
    }  
    return -1;  
}

Espero que eu tenha ajudado.

Abraço>

P

Então, é um programa que faz buscas sequenciais de números dentro de um Array.
lin é para representar a linha.
o erro que dá é:
Busca.java:19: not a statement

Aqui a descrição do que o programa deveria fazer.
/* Fazer um programa que faça uma busca sequencial.
Se nao existe retorna -1
Se existe retorna o índice.

BUSCA SEQUENCIA
95 10 42 300 20
0 1 2 3 4
i i i i i

Busca

int v[]

+< busca(int tam) Instancia Vetor
+VOID MOSTRA Mostra Array
+VOID INSERE Insere dados na Tela
int buscaSeq(int valor)

outra classe, uma class

TestaBusca

+void main()

*/

leorbarbosa

Colega,

em Java assim como em outras linguagens, você deve declarar as variáveis e de preferência inicializá-las:

Por exemplo:

String s = “”;
int n = 0;

Espero ter ajudado.

Hildebrando_Pedroni

Cara algumas coisas:

Primeiramente o seu programa não tem um metodo main, é só uma classe.
A não ser que vc esteja chamando ela de algum outro lugar que contenha o metodo main, é necessário coloca-lo ai.

Segundo:

(lin = lin + v[i] + "  ");

primeiro tem o erro de sintaxe, o correto seria assim:

lin = (lin + v[i] + "  ");

Segundo, essa variável é de que tipo e onde ela está sendo declarada?
Como vc esta concatenando ela com um " ", eu imagino que ela seja do tipo String, portanto faça isso:

String lin = (v[i] + "  ");

Outro ponto

public int buscaSeq(int valor) {

		for (int i = 0; i < v.length; i++) {
			if (v[i] == valor) {
				return i;
			}
			return -1;
		}
	}

Repare que no código vc está dando um return i dentro do if que esta dentro do for.
E o return -1 também esta dentro do for, ele deve estar fora do for, porque senão ele estará dentro do escopo do for.
E o seu metodo buscaSeq vai reclamar que não tem um retorno dentro do escopo dele.
tente assim:

public int buscaSeq(int valor) {

		for (int i = 0; i < v.length; i++) {
			if (v[i] == valor) {
				return i;
			}
			
		}
          return -1;
	}

Faz uma outra classe com um metodo main assim:

import javax.swing.JOptionPane;

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

		Busca busca = new Busca(10);

		busca.insere();
		busca.mostra();
		
		
		int buscaPorValor = busca.buscaSeq(5);
		JOptionPane.showMessageDialog(null, buscaPorValor);
		
		
	}
}

Abraços

P

Obrigado pela ajuda de todos, consegui compilar, agora esta dando erro no método main. :smiley:

Hildebrando Pedroni, valeu mesmo cara, então, isso é um exercício didático, o objetivo é inserir valores num array. Depois de preenchido é para checar se algum número qualquer existe dentro dele. Por exemplo, ver se o número 51 existe dentro desse Array. Então o objetivo é criar um método que percorre o Array e compara cada valor do Array com o numero 51. Se o número for encontrado é para mostra-lo na tela atravéz do JOptionPane, se nao, é para retornar o valor -1. O método main está em outra classe.

Abraços

Hildebrando_Pedroni

Então faz assim ó, fica mais legal:
Class Busca

import javax.swing.JOptionPane;

//importa clase  

public class Busca {
	private int v[];

	public Busca(int tam) {
		v = new int[tam];

	}

	public void insere() {
		for (int i = 0; i < v.length; i++)
			v[i] = Integer.parseInt(JOptionPane
					.showInputDialog("entre o valor"));
	}

	public int buscaSeq(int valor) {
		for (int i = 0; i < v.length; i++) {
			if (v[i] == valor) {
				return i;
			}

		}
		return -1;
	}

	public void mostra(int valorEncontrado) {
		JOptionPane.showMessageDialog(null, "Valor Encontrado : "
				+ valorEncontrado);
	}

}

Main Class

import javax.swing.JOptionPane;

public class MainTeste {
	public static void main(String[] args) {
		Busca busca = new Busca(10);

		// Insere numeros
		busca.insere();

		int numeroBuscado = Integer.parseInt(JOptionPane
				.showInputDialog("entre o valor a ser procurado"));

		int buscaPorValor = busca.buscaSeq(numeroBuscado);
		if (buscaPorValor == -1) {
			JOptionPane.showMessageDialog(null, "Nenhum valor encontrado");
		} else {
			busca.mostra(numeroBuscado);
		}

	}
}

Mas é importante vc ver onde vc errou o resto é só deixar bonitinho.
Qualquer duvida posta ai.

Abraços

Criado 4 de março de 2010
Ultima resposta 4 de mar. de 2010
Respostas 7
Participantes 5