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 :
packageexercicio4;importjavax.swing.*;publicclassMain{publicstaticvoidmain(String[]args){Stringpresentes[]=newString[70];inti=0;Stringcontinuar;intcontinuar1;intconfirmar=0;do{do{confirmar=0;presentes[i]=JOptionPane.showInputDialog("Insira novo presente");for(intc=0;c<70;c++){[color=red]if(presentes[c]<>presentes[i]){=====>>>>Linhadoerro[/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");}}
O operador para comparar duas strings é equals, não "<>" (que é coisa do Delphi, não do Java).
if(!presentes[c].equals(presentes[i])){
R
ricardorodrigues
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
ricardorodrigues
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
thingol
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
thingol
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
ricardorodrigues
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
thingol
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
ricardorodrigues
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
PedroGuerra
Pelo jeito vc so quer a resposta certa:
faz um metodo assim:
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:
ArrayListls_presentes=newArrayList();intopcao=0;do{opcao=Integer.parseInt(JOptionPane.showInputDialog("1 - Cadastrar presente\r\n2 - Sair"));switch(opcao){case1:Stringls_novo_presente=JOptionPane.showInputDialog("Qual o presente");booleancontem_presente=false;for(inti=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");elsels_presentes.add(ls_novo_presente);}}while(opcao!=2);
Tchauzin!
R
ricardorodrigues
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
PedroGuerra
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
thingol
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.
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[]…