Erro no IF[RESOLVIDO]

20 respostas
R

Galera como sou iniciante em Java tudo que fasso é derivado de c++ ja que meu conhecimento de java é pequeno, tou com um erro aqui no codigo e nao fasso a minima ideia do que é, pode ser que seja no diferente.nao sei.

Abaixo Enunciado: Luluzinha vai se casar. Crie um programa para guardar sua lista de presentes. Não é permitido inserir itens repetidos. (obs. Maximo 70 presentes).

Codigo :

package exercicio4;

import javax.swing.*;

public class Main {

    public static void main(String[] args) {
        
        String presentes[] = new String [70];
        int i = 0;
        String continuar;
        int continuar1;
        int confirmar = 0;
        
        do{
            
            do{
               
                confirmar = 0;

                presentes[i] = JOptionPane.showInputDialog("Insira novo presente");
        
                for(int c=0; c<70;c++){
            
                  [color=red] if (presentes[c] <> presentes [i]){    =====>>>> Linha do erro[/color]                    
                    }else{
                        
                        confirmar = 1;
                        JOptionPane.showMessageDialog(null,"Presente ja inserido");
                    }
                }
        
                }while(confirmar==1);
                i = i + 1;
        
                continuar =JOptionPane.showInputDialog ("Deseja inserir outro presente? 1-SIM / Outros - Nao");
        
                continuar1 = Integer.parseInt(continuar);

            }while(continuar1==1 && i<70 );

            JOptionPane.showMessageDialog(null,"Voce optou por nao cadastrar mais presentes ou atingiu o limite de 70");
        
        }
    
}

20 Respostas

T

O operador para comparar duas strings é equals, não "<>" (que é coisa do Delphi, não do Java).

if ( ! presentes[c].equals (presentes [i]) ){
R

thingol:
O operador para comparar duas strings é equals, não "<>" (que é coisa do Delphi, não do Java).

if ( ! presentes[c].equals (presentes [i]) ){

Fiz do geito que vc passou e logo na primeira insercao ele alega que o presente ja existe ou seja

retorna a mensagem
“Presente ja inserido”

Eu quero comparar as duas strings como sendo presentes[c] diferente de presentes [i]

gui_sv

tenta com x.equalsIgnoreCase(y)

R

Pessoal seis fala uns treco dificil de enteder se nao for pedir demais deixa mais explicadinho

nao entendi o que o amigo gui_sv quis dizer

T

equalsIgnoreCase é mais ou menos a mesma coisa que o strcmpi do C (ou seja, compara 2 strings sem levar em conta a diferença entre minúsculas e maiúsculas).

Seu problema é outro; é que você esqueceu de ver que em um determinado instante (ou seja, já no começo), o valor da variável c é o mesmo valor da variável i, ou seja, 0, e então vai dar esse resultado que você não quer.
Você precisa pegar um lápis, um papel e pensar um pouco.

T

Dica: crie um método separado, que sirva para procurar uma string dentro de um array.
Aí você testa esse método, vê se ele está funcionando, e chama o método dentro do main.
Pôr tudo no mesmo método, como se fosse um programa do tipo “linguição”, é normalmente receita para o fracasso. É que foi comprovado cientificamente que um ser humano não consegue entender direito métodos com mais de 60 linhas (ou seja, uma página impressa de papel).

R

Thingol ai que ta o problema tenho que termina os 10 ex ate 5 e meia da tarde

Acho que vou começar a o c a partir do 1 entao deve resolver;

E ainda nao sei trabalhr em java orientado a objeto xD

a prfessora ta passando so estruturado por enquanto o que acho um saco pq java foi feito para ser orientado mais fazer o q

T

Criar métodos não é orientação a objeto. É programação estruturada mesmo. Que eu saiba, é possível criar funções em C puro, sem pôr tudo no “main”.

R

quando disse que aprendi c em logica era so as estruturas nao aprendemos funcoes

sei mais ou menos o que tu quier dizer mais os programas que temos que fazer é tudo com as estrututas basicas de programacao

if, case, do while, while, for

P

Pelo jeito vc so quer a resposta certa:
faz um metodo assim:

private Boolean verificaList(String[] lista, String s){
        Boolean achou = false;
        for(int i=0;i<lista.length;i++){
            if(lista[i].equalsIgnoreCase(s)){
                achou = true;
            }
        }
        return achou;
    }
R

cara ja disse nao posso usar metodos

como vou apresentar a professor coisas que ele nao ensinou?

lina

Oi,

Acho melhor você colocar no papel primeiro! Você poderá utilizar um ArrayList no lugar de String[].
Também poderá utilizar apenas 1 while!

Pense bem!

Tchauzin!

lina
ricardorodrigues:
cara ja disse nao posso usar metodos

como vou apresentar a professor coisas que ele nao ensinou?

Oi,

e se você fizer assim:

ArrayList ls_presentes = new ArrayList();
		
int
opcao = 0;
		
do
{
     opcao = Integer.parseInt(JOptionPane.showInputDialog("1 - Cadastrar presente\r\n2 - Sair"));
			
     switch (opcao) {

          case 1:
				
               String
               ls_novo_presente = JOptionPane.showInputDialog("Qual o presente");
					
               boolean
               contem_presente = false;
					
               for (int i = 0; i<70; i++) {
                    
                    if (i < ls_presentes.size()  && ls_presentes.get(i).equals(ls_novo_presente)) {
    
                         contem_presente = true;
                    }
               }
				
               if (contem_presente)
                    System.out.println("Já existe o presente adicionado na lista");
               else
                    ls_presentes.add(ls_novo_presente);
     }
			
}
while (opcao != 2);

Tchauzin!

R

kkkkkk

galera dexa essa parada de verificar pra la nao ta dando geito a solucao de vcs pode ser viavel, mais nao no escopo do que aprendi o que vcs falam pra mim é ingles, ou seja, so sei o basico

SUAHUAHUSAHUSAHUSAH

vo entregar esse exercicio sem a verificação mesmo, pq tenho que termina now!!!

P

Se vc pensar um pouco vc consegue.

Cata o metodo que eu pasei e substitui os parametros e encaixa ele onde vc precisa. Mto simples.

T

ricardorodrigues:
cara ja disse nao posso usar metodos

como vou apresentar a professor coisas que ele nao ensinou?

Depende do seu professor.
Alguns professores são mais espertos e aceitam coisas que eles não ensinaram SE ELES SOUBEREM que você aprendeu sozinho, não que você ficou só pedindo a resposta pronta.
Alguns outros são bem toscos e não aceitam as coisas que eles não ensinaram - até porque alguns deles nem sabem além da apostila, o que é deplorável.
Não tenho aulas com seu professor, portanto não tenho como saber que tipo de professor é o seu.

V

Cara pra ficar + facil vc pode fazer o seguinte

String presenteNovo = "";
String presenteAntigo = "";
presenteNovo  = presentes[c] ;
presenteAntigo = presentes [i];


e compara com equals
if(!presenteNovo.equals(presenteAntigo)){
....
}else{
...
}
R

galera deixa pra la deixei pela metade mesmo, nao tou com tempo pra estudar o problema a fundo, quando postei a duvida pensei que fosse algum erro meu no if e so mais como nao e deixa pra la

lina

Oi,

A minha resposta não dá? Você estou switch/case ? Só utilizei ArrayList no lugar da sua String[]…

Sorry…

Tchauzin!

R

tudo bem lina obrigado pela ajuda e paciencia

:smiley:

Criado 3 de novembro de 2009
Ultima resposta 3 de nov. de 2009
Respostas 20
Participantes 6