Jump to content
Fórum Script Brasil
  • 0

Oque Tem De Errado Nesse Metodo?


frnd
 Share

Question

public void exibirValores() {

String meses[] = ("Janeiro", "Fevereiro","Março",

"Abril", "Maio", "Junho","Agosto","Setembro","Outubro","Novembro","Dezembro");

for (int i=0; i < 12; i++)

System.out.println(meses + ": "+ totalMes );

}

}

Dá sempre erro na segunda linha...

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

/**

* @(#)Vendas.java

*

*

* @author

* @version 1.00 2007/8/1

*/

Classe Vendas

import java.util.Scanner;

public class Vendas {

private float totalMes[];

private int ano;

public Vendas(int ano) {

totalMes = new float[12];

this.ano = ano;

}

public void lerValores (int mesi, int mesf){

Scanner entrada = new Scanner( System.in );

if (mesi > mesf )

System.out.println("Meses inválidos!");

else {

{

for (int i=mesi; i <= mesf; i++)

{

System.out.print("mês" + i + ": ");

totalMes[ i - 1 ] = entrada.nextFloat();

}

}

}

} public void exibirValores() {

String meses[] = {"Janeiro", "Fevereiro","Março","Abril", "Maio", "Junho","Agosto","Setembro","Outubro","Novembro","Dezembro"};

for (int i=0; i < 12; i++)

System.out.println(meses + ": "+ totalMes );

}

}

-----------------------------

Metodo Main

public class VendasMain {

public static void main(String args[]){

Vendas v = new Vendas(2007);

v.lerValores(1,3);

v.exibirValores();

}

}

quando eu digito 3 valores, eles mostra os resultados certinhos e tals.. mas no final mostra essa mensagem...

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11

at Vendas.exibirValores(Vendas.java:40)

at VendasMain.main(VendasMain.java:16)

resolvido... o for deve estar assim

for (int i=0; i < 11; i++)

pois existem 11 partes na array, contando com 0.. por isso que fica 11

certo?

E se eu quisesse somar todos os meses informados?

Link to comment
Share on other sites

  • 0

você fala somar os valores de cada mês?se for pode declarar uma variável total logo depois de private int ano e no for incrementar ela.

...
for (int i=mesi; i <= mesf; i++)
{
System.out.print("mês" + i + ": ");
totalMes[ i - 1 ] = entrada.nextFloat();
total += entrada.nextFloat();
}
..

ai é só exibir seu valor

Link to comment
Share on other sites

  • 0

você esqueceu o mês de JULHO... o vetor só tem 11 posicoes, logo o laço for vai acessar uma posicao inexistente do array.

PS.: frnd, quando c for postar códigos use a tag CODE e deixe o código identado... facilita a leitura

Link to comment
Share on other sites

  • 0

é... bom, a ordenação é um clássico na programação... todo livro fala disso e acredito que você saiba fazer... (tá só com preguiça hehehhe)

pra facilitar, eu usaria ArrayList ou HashMap (preferencialmente) pois já tem muitos métodos prontos interessantes.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.4k
×
×
  • Create New...