[java - NetBeans] else without if

tseabra

Membro
Isto foi um main dado pelo prof para os alunos fazerem os métodos .

Isto dá-me aqui uns erros nos else's que não compreendo .
diz que não tem if's mas eles estão lá . :(

'else' without 'if'


e tambem isto nos métodos com Void :
class, interface, or enum expected


Código:
import java.util.Scanner;
public class Nomes {
    public static int inserirNome (String[]listaA, int elem, String nome){
        
        if (procurarNome(listaA,elem,nome)!=-1){
                System.out.println("Nome já existe na Lista");
                else {
                    elem+=1;
                    listaA[elem]=nome; 
                }
        }
    }
    public static void alterarNome(String[]listaA, int elem, String nome, String novo) { 
        
        if (procurarNome(listaA,elem,nome)=-1){
            System.out.println("O nome não pode ser alterado porque não existe");
            else
                listaA[procurarNome(listaA,elem,nome)]=novo;
        
        }
    } 
    public static int eliminarNome(String[]listaA, int elem, String nome) {
    
            if (procurarNome(listaA,elem,nome)=-1){
                System.out.println("Nome não existe na Lista");
                else 
                    listaA[procurarNome(listaA,elem,nome)]=""; 
            }
    }
    
    public static void procurarNome(String[]listaA, int elem, String nome) {
        boolean encontrou=false;
        int i=0;
        while( i<elem && !encontrou)
        {
            if( listaA[i] ==nome)
                encontrou=true;
            else i++;
        }
        if (encontrou)
            return i;
        else return -1;
    } 
    
    public static void listarNomes(String[]listaA, int elem) { 
       
        if (elem>0) {
            out.format("Listagem de todos os nomes");
            for (int i=0; i>listaA.length; i++) {
                System.out.println("Posição %i : %s", i,v[i]);
            }
       else
            System.out.println("Vector vazio");
       }
    }

    public static void main(String[] vs) { 
        String listaA[] = new String[10]; 
        int elems=0; 
        elems=inserirNome(listaA, elems,"Pedro");
        elems=inserirNome(listaA, elems,"Zé");  
        elems=inserirNome(listaA, elems,"Ana"); 
        if (alterarNome(listaA, elems,"Zé","José")) 
            System.out.println("Alteração fectuada");   
        elems=eliminarNome(listaA,elems,"Pedro");   
        listarNomes(listaA, elems); 
} 

}
Se puderem ajudar agradeço . :)
 
if (procurarNome(listaA,elem,nome)=-1){
System.out.println("Nome não existe na Lista");
else
listaA[procurarNome(listaA,elem,nome)]="";
}

O problema tá ai ;)


Edit, tira { desse if e passa a funcionar


Edit2, Esse erro está repetido 3 vezes.
 
Código:
if (procurarNome(listaA,elem,nome)!=-1){
        System.out.println("Nome já existe na Lista");
         }
           else 
           {
              elem+=1;
              listaA[elem]=nome; 
           }
        }


Quando tens apenas uma instrução dentro do if, nao precisas de usar {}


Cumpz
 
Obrrigado pela ajuda :D

Mas neste Método continua a dar o erro mesmo depois de fazer isso . :s
e depois isto propaga erros ao main . mas uma coisa de cada vez . :P

Código:
public static void listarNomes(String[]listaA, int elem) { 
       
        if (elem>0) {
            out.format("Listagem de todos os nomes");
            for (int i=0; i>listaA.length; i++){
                System.out.println("Posição %i : %s", i,v[i]);}
       else
            System.out.println("Vector vazio");
        }
   }
 
Tens uma } , assim já ta correcto
Código:
  public static int inserirNome (String[]listaA, int elem, String nome){
        
        if (procurarNome(listaA,elem,nome)!=-1)
                System.out.println("Nome já existe na Lista");
                else {
                    elem+=1;
                    listaA[elem]=nome; 
                }
        
    }
Faltava fechar } no if (a seguir ao for)
Código:
 public static void listarNomes(String[]listaA, int elem) { 
       
        if (elem>0) {
            out.format("Listagem de todos os nomes");
            for (int i=0; i>listaA.length; i++) {
                System.out.println("Posição %i : %s", i,v[i]);
            }
        }
       else
            System.out.println("Vector vazio");
       }
    }

Assim já ta correcto.


E mais repara que procurarNome não devolve nada, contudo estás a usá-lo para acesso a um array .... no eliminarNome e alterarNome
 
Código:
public static void listarNomes(String[]listaA, int elem) { 
       
        if (elem>0) {
            out.format("Listagem de todos os nomes");
            for (int i=0; i>listaA.length; i++){
                System.out.println("Posição %i : %s", i,v[i]);}
       [B] }[/B]
    else
            System.out.println("Vector vazio");
        
   }
o teu problema é nao saberes onde por as {}

Código:
if condição {
       instruçoes
   }

else {
        instruções
 }



EDIT: eu tb tenho de fazer o mesmo exercicio... :D
Mas só vou começar agora.
 
Última edição:
Como fazer if-elses em java:

Código:
if (condição)
   instru[B]ção[/B]; // olha o singular
else
   instru[B]ção[/B]; // olha o singular
Código:
if (condição)
   instru[B]ção[/B]; // olha o singular
else [COLOR=Red]{[/COLOR]
   instru[B]ções[/B]; // olha o plural
[COLOR=Red]}[/COLOR]
Código:
if (condição) [COLOR=Red]{[/COLOR]
    instru[B]ções[/B]; // olha o plural
[COLOR=Red]}[/COLOR] else 
   instru[B]ção[/B]; // olha o singular
Código:
if (condição) [COLOR=Red]{[/COLOR]
     instru[B]ções[/B]; // olha o plural
[COLOR=Red]}[/COLOR] else [COLOR=Red]{[/COLOR]
    instru[B]ções[/B]; // olha o plural
[COLOR=Red]}[/COLOR]

Código:
if (condição)
     instru[B]ção[/B]; // olha o singular e repara que não há else

Código:
if (condição) [COLOR=Red]{[/COLOR]
      instru[B]ções[/B]; // olha o plural e repara que não há else
[COLOR=Red]}[/COLOR]


E pronto..., tens aqui as combinações todas...
 
Já está .

Obrigado a todos pela ajuda .

está aui a versão final:
Código:
import java.util.Scanner;
public class Nomes {
    public static int inserirNome (String[]listaA, int elem, String nome){
        
        if (procurarNome(listaA,elem,nome)!=-1)
                System.out.println("Nome já existe na Lista");
                else {
                    elem+=1;
                    listaA[elem]=nome; 
                }
    }
    public static boolean alterarNome(String[]listaA, int elem, String nome, String novo) { 
        boolean alterado=false;
        if (procurarNome(listaA,elem,nome)!=-1){
            listaA[procurarNome(listaA,elem,nome)]=novo;
            alterado=true;
        }
        else
            System.out.println("O nome não pode ser alterado porque não existe");
        return alterado;
    } 
    public static int eliminarNome(String[]listaA, int elem, String nome) {
    
            if (procurarNome(listaA,elem,nome)!=-1){
                    listaA[procurarNome(listaA,elem,nome)]=""; 
                    elem+=1;}
                else 
                    System.out.println("Nome não existe na Lista");
            return elem;
    }
    
    public static int procurarNome(String[]listaA, int elem, String nome) {
        int encontrou=0;
        int i=0;
        for (i=0;i<listaA.length;i++)
            if( listaA[i] ==nome)
                encontrou=1;
        if (encontrou>1)
            return i;
        else 
            return -1;
    } 
    
    public static void listarNomes(String[]listaA, int elem) { 
       
        if (elem>0) {
            System.out.println("Listagem de todos os nomes");
            for (int i=0; i>listaA.length; i++){
                System.out.println(listaA[i]);
            }
        }
        else
            System.out.println("Vector vazio");
     }
   

    public static void main(String[] vs) { 
        String listaA[] = new String[10]; 
        int elems=0; 
        elems=inserirNome(listaA, elems,"Pedro");
        elems=inserirNome(listaA, elems,"Zé");  
        elems=inserirNome(listaA, elems,"Ana"); 
        if (alterarNome(listaA, elems,"Zé","José")) 
            System.out.println("Alteração fectuada");   
        elems=eliminarNome(listaA,elems,"Pedro");   
        listarNomes(listaA, elems); 
} 
}


Agora o meu NetBeans dá isto :

Código:
init:
deps-jar:
Compiling 1 source file to C:\Users\xxxxx\Ex1Avalia3\build\classes
C:\Users\tseabra\Ex1Avalia3\src\Nomes.java:11: missing return statement
    }
1 error
BUILD FAILED (total time: 0 seconds)

o erro é a fechar o primeiro método !
 
Convém leres as mensagens de erro também ;)

Código:
public static [COLOR=Red][B]int[/B][/COLOR] inserirNome (String[]listaA, int elem, String nome){
        
        if (procurarNome(listaA,elem,nome)!=-1)
                System.out.println("Nome já existe na Lista");
                else {
                    elem+=1;
                    listaA[elem]=nome; 
                }
}
Onde é que tens o return neste função?
 
Pois lá isso é verdade "missing return" .

peço desculpa pela pergunta estupida . :P

Muito obrigado a todos .

E peço a quem entregar isto no ISEP que não faça cópia integral , lol
 
Convém leres as mensagens de erro também ;)

Código:
public static [COLOR=Red][B]int[/B][/COLOR] inserirNome (String[]listaA, int elem, String nome){
        
        if (procurarNome(listaA,elem,nome)!=-1)
                System.out.println("Nome já existe na Lista");
                else {
                    elem+=1;
                    listaA[elem]=nome; 
                }
}
Onde é que tens o return neste função?

Tens de fazer o return dos elem
 
Pois lá isso é verdade "missing return" .

peço desculpa pela pergunta estupida . :P

Muito obrigado a todos .

E peço a quem entregar isto no ISEP que não faça cópia integral , lol

tens que fazer o elem+=1; depois das operações com o vector e não antes.
E se bem me lembro tb era pedido para não deixares introduzir alem do tamanho do vector.

e já agora o static remove porque não está ai a fazer nada. Não sei o porque é que vocês todos andam a usar métodos static. Já o teu colega que ajudei ainda hj a fazer isso tinha o mesmo vicio.
 
Código:
        if (alterarNome(listaA, elems,"Zé","José")) 
            System.out.println("Alteração fectuada");

Tas a ver esse if? quer dizer que esse método retorna 1 boolean e não é do tipo void como tu puses-te.
 
Back
Topo