Pessoal estou com duvidas, não sei se ta correto a forma que estou utilizando o arraycopy.
Eu quero copiar os elementos da array de origem (totalDeCarros) apartir da posição que for fornercida por um usuario em um Scanner(idCarro). jogando no array de destino (carrosAlugados) na posição inicial 0.
parte do codigo abaixo.
case3:System.out.print("0 a "+(client.length-1)+", informe seu ID:");idClient=sc.nextInt();System.out.print(client[idClient].getNome()+" informe o codigo do carro de 0 a "+(totalDeCarros.length-1)+" que você deseja alugar: ");idCarro=sc.nextInt();System.arraycopy(totalDeCarros,idCarro,carrosAlugados,0,totalDeCarros.length);break;
está dando erro no arraycopy e não sei se o jeito que coloquei ta certo ou não, acredito que não.
Estou iniciando na area…
Fiz dessa forma e estar dando erro, ao inves de passar um valor pra posicaoSelecionada eu estou jogando uma variavel que recebe um valor atraves de um Scanner e por que está dando erro?
F
FearX1 like
Sem você postar o stacktrace fica dificil adivinhar. Por que não posta a exception pra gente?
L
Lucaaslb
Poste o erro que esta gerando
T
thsaraiva
Foi mal, estou começando na area e não conhecia os termos e tal. mas é esse ai
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException at java.base/java.lang.System.arraycopy(Native Method) at com.company.Main.main(Main.java:112)
L
Lucaaslb
Bem interessante, valeeu!
Mas acredito que para alguns casos de iniciante, como o @thsaraiva informou que é, seja melhor praticar logica criando os próprios métodos.
F
FearX1 like
Esse erro é auto-explicativo, tenta pensar um pouquinho no que você tá fazendo… pensa no tamanho dos vetores…
T
thsaraiva
Que foi excedido os limites.
Array totalDeCarros[15].
carrosAlugados[5].
Porem eu quero copiar apenas uma posição do totalDeCarros pra colocar em uma posição em carrosAlugados.
exemplo: totalDeCarros posição 3 e jogar na posição 2 do array carrosAlugados.
Acredito que por estar usando o System.arraycopy, deva ter lido como funciona.
Dei uma olhada rapido no link que foi passado acima, e esta facil entender.
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
Os argumentos “src” e “dest” representam os vetores origem e destino, respectivamente. O argumento “srcPos” é a posição inicial no array origem. O argumento “destPos” é a posição inicial no array destino. Por fim, “length” é utilizado para especificarmos o número de elementos que serão copiados.
Aposto que se colocar o seu inicio (digitar) que quer no index >=10 não vai dar o erro …
Aconselho a criar seus próprios métodos agora que esta iniciando, ficará mais fácil entender e aperfeiçoar sua logica.