Exercicio java

11 respostas
S

se alguem poder ajudar!

tenho tres classe
uma classe de cadastro e outra que chama os objeto do cadastro meu codigo:

cadastro:

` */
package Caelum;

import java.util.Scanner;

/**
*

  • @author Andre Santos
    
    */
    
    public class Syst {
    
    Scanner sc = new Scanner(<a href="http://System.in">System.in</a>);
    
    Cliente []clientes = new Cliente[2];
    
    int i = 0 ;
    

    public void cadastrar(){
    Cliente cli = new Cliente();

    System.out.println("Nome:");
     cli.setNome(sc.next());
     
     System.out.println("Sexo:");
     cli.setSexo(sc.next().charAt(0));
     
      
     for(int i = 0; i < clientes.length;i++){
         if(clientes[i] != null){
         clientes[i] = cli;
    

    }

    }
    

    }`

void menu(){

int op;

do {

System.out.println(“1.Cadastrar”);

System.out.println(“2.Sair”);

System.out.print("\nEscolha uma operação: ");

op = sc.nextInt();
switch (op){

case 1:

cadastrar();
break;

}while (op != 2);
}

}

e a classe que chama:

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

Syst sistema = new Syst();
    
    sistema.menu ();
    
}

}

meu vetor pode adicionar dois clientes , entao gostaria que
apresentasse uma mensagem de erro informando se o vetor estiver cheio caso ja tenha ultrapassado o numero de cliente permitido!

11 Respostas

A

Amigo,
Quando o usuário acessar o cadastrar, você pode colocar:

if (clientes.length > 2) {
       System.out.println("Não é possivel cadastrar mais.");
} else {
       //Função para cadastrar um novo usuário.
}
S

certo coloquei so que dar o seguinte erro:

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 2

at SisFarm.CadGeral.Cadastrar(CadGeral.java:49)

at SisFarm.CadGeral.menu(CadGeral.java:87)

at SisFarm.CadCliente.main(CadCliente.java:19)

C:\Users\Andre Santos\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
A

Troca o valor do teste por 1.
Esqueci que array trabalha com n-1. :confused:

if (clientes.length > 1)

S

fiz o seguinte:

package teste;

import java.util.Scanner;

public class Cad {

Scanner sc = new Scanner(<a href="http://System.in">System.in</a>);

Cliente []clientes = new Cliente[2];
public void cadastrar(){
     Cliente cli = new Cliente();
     
     if(clientes.length  > 1){
         System.out.println("Erro");
     
     }else
     
       System.out.println("Nome:");
        cli.nome = sc.next();
        
        System.out.println("Cidade:");
        cli.cidade = sc.next();
        
        for (int i = 0;i < clientes.length;i ++){
            if(clientes[i] == null){
                 clientes[i] = cli;
                 
                 
                 
            }
            
             
        }
     
 }

`

S

so que nao ta dando certo ainda! ta retornando apenas mensagem de erro:
depois aparece apenas para cadastrar cidade e nao pecorre pela quantidade que tem na array

A

Tenta retirar o for de dentro do else:

public void cadastrar(){
     Cliente cli = new Cliente();

     if(clientes.length  > 1){
         System.out.println("Erro");

     }else

       System.out.println("Nome:");
        cli.nome = sc.next();

        System.out.println("Cidade:");
        cli.cidade = sc.next();
        }

        for (int i = 0;i < clientes.length;i ++){
            if(clientes[i] == null){
                 clientes[i] = cli;
        }

 }
S

nao dar certo tambem parceiro!

A

Se já estiver cheio, você quer que ele saia e apresente as informações?

S

isso exato! tenho um vetor com [6] ,caso esteja cheio e nao poder mais efetuar cadastro quero que retorne uma mensagem de algum erro : afirmando que nao e possivel mais cadastrar!

A

Cara, no if, tenta dar um return vazio, que o sistema deve parar ali. Ou System.exit(0); para fechar a aplicação.

if(clientes.length  > 1){
         System.out.println("Erro");
         return;
}
J

Faz assim:

import java.util.ArrayList;
import java.util.Scanner;

public class Cliente {

static ArrayList lista = new ArrayList();

private String nome;

private String sexo;
public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getSexo() {
    return sexo;
}

public void setSexo(String sexo) {
    this.sexo = sexo;
}

@Override
public String toString() {
    return  "\tNome: " + nome + "\n"+
            "\tSexo: " + sexo + "\n"+
            "------------------------\n";
}



Scanner sc = new Scanner(System.in);

int i = 0 ;

public void cadastrar(){
while( i <=2){

Scanner sc = new Scanner(System.in);
Cliente cli = new Cliente();
System.out.println("Nome:");
cli.setNome(sc.nextLine());

System.out.println("Sexo:");
cli.setSexo(sc.nextLine());

lista.add(cli);
System.out.println("------------------------");
System.out.println("\tCliente cadastrado: \n"+i+lista);
i++;
    if (i== 2) {
    System.out.println("Limite esgotado ");
    System.out.println("Clientes cadastrados: \n"+i+lista);
    System.exit(0);
    }
break;
}
}

void menu(){
int op;
do {
System.out.println("1.Cadastrar");
System.out.println("2.Sair");
System.out.print("\nEscolha uma operação: ");
op = sc.nextInt();

switch (op){
case 1:
cadastrar();
break;

case 2: break;

}
}while (op != 2);
}

public static void main(String[] args) {

Cliente sistema = new Cliente();

sistema.menu ();
}

}

Criado 15 de junho de 2016
Ultima resposta 16 de jun. de 2016
Respostas 11
Participantes 3