Chase R
Pôster original- 8 de maio de 2008
- PDX
- 2 de junho de 2009
Calcule Outra Estimativa (S / N): Exceção no thread 'main' java.lang.StringIndexOutOfBoundsException: Índice de string fora do intervalo: 0
em java.lang.String.charAt (String.java:558)
em Test1.main (Test1.java:73)
Por que está fazendo isso !!!
A propósito, aqui está o programa:
Código:
public class Test1 { public static void main( String[] args ) { String customer = ' '; String customerUC = ' '; String type1 = ' '; String type2 = ' '; char type = ' '; String another1 = ' '; char another = 'y'; int fence = 0; int count = 0; double costFoot = 0; double costTotal = 0; double costGrand = 0; Scanner read = new Scanner(System.in); System.out.print( '
----------SIERRA FENCING COMPANY----------' ); while ( Character.toUpperCase(another) == 'Y' ) { System.out.print( '
Your Name: ' ); customer = read.nextLine(); customerUC = customer.toUpperCase(); System.out.print( '
New Installation (N) or Repair (R): ' ); type1 = read.nextLine(); type2 = type1.toUpperCase(); type = type2.charAt(0); System.out.print( '
Amount of Fencing Needed (linear feet): ' ); fence = read.nextInt(); System.out.print( '
Cost-Per-Foot of Fencing: ' ); costFoot = read.nextDouble(); if ( costFoot > 6 && type == 'N' ) { costFoot = 6; } else if ( costFoot > 5 && type == 'R' ) { costFoot = 5; } costTotal = fence * costFoot; costGrand += costTotal; count++; System.out.print( '
-------------------------------------------------------' ); System.out.print( '
Name: ' + customerUC ); System.out.print( '
Type: ' + type ); System.out.print( '
Linear Fencing: ' + fence + ' feet' ); System.out.print( '
Cost-Per-Foot: $' + costFoot ); System.out.print( '
Total: $' + costTotal ); System.out.print( '
-------------------------------------------------------' ); System.out.print( '
Calculate Another Estimate (Y/N): ' ); another1 = read.nextLine(); another = another1.charAt(0); } System.out.print( '
Grand Total: $' + costGrand ); System.out.print( '
You made ' + count + ' estimates' ); } }
Littleodie914
- 9 de junho de 2004
- Rochester, NY
- 2 de junho de 2009
Editar: Parece ter algo a ver com o método nextLine () avançando o ponteiro além da linha atual. Eu mesmo não entendo muito, mas estes links podem ajudar a esclarecer um pouco a confusão:
Scanner API
Postagem de fórum relacionada
HiRez
- 6 de janeiro de 2004
- Oeste dos Estados Unidos
- 2 de junho de 2009
gnasher729
Suspenso
- 25 de novembro de 2005
- 2 de junho de 2009
Chase R disse: Acabei de escrever este programa para minha classe java. É um programa simples que calcula quanto custa para instalar uma cerca. No final, pergunta 'você gostaria de fazer outra estimativa (S / N)', e o usuário deve escolher sim ou não. No entanto, depois de terminar de executar o meu, não terei essa opção, apenas diz:
Calcule Outra Estimativa (S / N): Exceção no thread 'main' java.lang.StringIndexOutOfBoundsException: Índice de string fora do intervalo: 0
em java.lang.String.charAt (String.java:558)
em Test1.main (Test1.java:73)
Por que está fazendo isso !!!
Como você tem o código-fonte, provavelmente em um editor de programa que pode ser feito para exibir números de linha, você deve ser capaz de encontrar onde está a linha 73 no arquivo Test1.main. Isso vai mostrar onde o problema acontece.
Agora você tem uma exceção que diz que um índice de 0 está 'fora do intervalo'. Se você acessar uma string com n caracteres, quais são os índices válidos?
Agora você pode nos dizer exatamente em que situação o índice 0 não é um índice válido?
Isso deve responder a sua pergunta.
SilentPanda
Moderador emérito
- 8 de outubro de 2002
- A floresta de bambu
- 2 de junho de 2009
gnasher729 disse: Já que você tem o código-fonte, provavelmente em um editor de programa que pode ser feito para exibir números de linha, você deve ser capaz de encontrar onde está a linha 73 no arquivo Test1.main. Isso vai mostrar onde o problema acontece.
A linha é:
Código:
another1 = read.nextLine();
logo após exibe 'Calcular outra estimativa (S / N):'
Publicações Populares