Aledro 15 de jun. de 2016
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 .
}
system-16 15 de jun. de 2016
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
Aledro 15 de jun. de 2016
Troca o valor do teste por 1.
Esqueci que array trabalha com n-1.
if (clientes.length > 1)
system-16 15 de jun. de 2016
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 ;
}
}
}
`
system-16 15 de jun. de 2016
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
Aledro 15 de jun. de 2016
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 ;
}
}
system-16 15 de jun. de 2016
nao dar certo tambem parceiro!
Aledro 15 de jun. de 2016
Se já estiver cheio, você quer que ele saia e apresente as informações?
system-16 15 de jun. de 2016
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!
Aledro 15 de jun. de 2016
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 ;
}
Jonas_B_a_r_r_o_s 16 de jun. de 2016
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 ();
}