Olá
tenho que pegar números que entram em uma linha de Strings, e passar para um array de int, mas não sei como usar o split (separando por espaço).
fiz o seguinte código:
Stringpontos;int[]numeros=newint[11];System.out.println("Digite as pontuações separadas por espaços: ");pontos=leitor.next();Stringnums[]=pontos.split(".\s*");
digitei os números separados por espaço e resultou nesse erro?
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Interface.pegueJogador(Interface.java:57)
at Principal.main(Principal.java:6)
vocês podem me ajudar? o que tá acontecendo?
Obrigada!
Tenta fazer assim, acho que isso já funciona para você
Stringnums[]=pontos.split(" ");
Espero ter ajudado
FLwss
ThaisBardini
Thiago,
não deu certo!
continua dando o mesmo erro…
já tentei de várias formas, colocando aspas aqui, barras ali, s*, e nada…
Socorroooo!
doug
Tem algum lugar mais que vc trabalha com esse array?
Porque a mensagem que está informando é que nao pode acessar um lugar no array
Pelo jeito nao é seu split
É na linha 57 da Classe Interface, método: pegueJogador
Por favor cole esse código para analisarmos melhor
Espero ajudar
Flwsss
lina
Oi,
Muito estranho.. a solução do thiago.filadelfo está correta para esta situação...
Olha.:
Stringtexto="OLA MUNDO EBAAA";String[]split=texto.split(" ");for(inti=0;i<split.length;i++)System.out.println(split[i]);
Saida.:
OLA
MUNDO
EBAAA
A exceção ArrayIndexOut....Bounds significa que você está pegando uma poisição de uma array que não existe! (fora do range)
Qual exatamente o texto que você está escrevendo para dar o split ?
Tchauzin!
ThaisBardini
importjava.util.Scanner;publicclassInterface{publicstaticintnumJogadores(){Scannerleitor=newScanner(System.in);intnumJogadores;System.out.println("Oi, Carla! :)");System.out.println("Digite o número de participantes: ");numJogadores=leitor.nextInt();returnnumJogadores;}publicstaticJogadorpegueJogador(){Scannerleitor=newScanner(System.in);Stringnome;inttam=16;Stringnomee="";charfirst;while(tam>15){System.out.println("Digite o nome do jogador: ");nome=leitor.next();nome=nome.toLowerCase();for(inti=1;i<nome.length();i++)nomee+=nome.charAt(i);first=Character.toUpperCase(nome.charAt(0));nomee=first+nomee;tam=nome.length();if(tam>15)System.out.println("Dado incorreto, digite um nome de até 15 letras.");}Stringpontos;int[]numeros=newint[12];System.out.println("Digite as pontuações separadas por espaços: ");pontos=leitor.next();Stringnums[]=pontos.split(" ");for(inti=0;i<12;i++)numeros[i]=Integer.parseInt(nums[i]);Jogadorjogador=newJogador(nomee,numeros);returnjogador;}}
a classe Interface teria que pegar um jogador com o nome apenas com a 1ª letra maiúscula (mas isso ainda não testamos se deu certo)e um array com sua pontuação em um jogo, mas os números entram em uma unica linha (String) separados por espaço.
não sabemos usar o split(mas já tentemos de todas as formas possíveis e imagináveis), não sabemos se o erro está nele, já resolvi o problema do tamanho do array, colocamos [12] no lugar do [11]..não usamos esse array ainda em nenhum outro lugar..
esse é o erro
Digite o número de participantes:
1
Digite o nome do jogador:
maria
Digite as pontuações separadas por espaços:
1 2 3 4 5 6 7 8 9 1 2 3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Interface.pegueJogador(Interface.java:57)
at Principal.main(Principal.java:6)
Obrigada ;D
doug
Olá
O erro esta ocorrendo nesta linha aqui:
for(int i = 0; i<12; i++)
numeros[i] = Integer.parseInt(nums[i]);
Observe, numeros tem o tamanho de 12 e qual o tamanho de nums… provavelmente nao seja 12 também
Nao sei se vc entendeu, faz o seguinte:
pois entãão.. fiz exatamente isso (apesar de ter digitado antes 12 números, exatamente..) e deu o mesmo erro
Fiz agora um System.out.printl pra mostra direto a String que tava pegando da primeira vez.. e deu erro nela! o.O
Não mostrou
System.out.println("Digite as pontuações separadas por espaços: ");pontos=leitor.next();System.out.println(pontos);Stringnums[]=pontos.split(" ");for(intk=0;k<nums.length;k++)System.out.println(nums[k]);intnumeros[]=newint[nums.length];for(inti=0;i<nums.length;i++){numeros[i]=Integer.parseInt(nums[i]);}
é algum erro besta que eu não tô conseguindo ver!! :O
lina
Oi,
Olha… parece que agora ficou certo! o que pode gerar exceção é o código.:
numeros[i]=Integer.parseInt(nums[i]);
Se algum caracter dentro de nums[i] for diferente de numerico! (+ isso é um pouco improvavel…)
Tchauzin!
ThaisBardini
o problema tá no leitor.next(), só tá pegando o 1º pq é por String… e eu quero a linha todaaa
como é o comando p pegar a linha toda? (tentei nextLine() e não deu)
lina
Oi,
Olha! nunca usei a classe Scanner em toda minha vida de JAVA.
Provavelmente ele deve ter o método hasNext().
Você deverá ficar nele (while) até acabar a montagem de sua String.