AJUDAAA! Programa que le pelo teclado um valor

eu estou tentando fazer um programa que leia pelo teclado o valor em dolar, converta e imprima o mesmo num valor em reais

exemplo:

public class Converte
{
public static void main(String[] args)
{
float dolar = Float.parseFloat(args[0]);
float real = (dolar*3.50F);
System.out.println("O valor " +dolar + " em real eh: " +real);
}
}

mas sempre que tento executar da o seguinte erro

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 0
at Exec1.main(Exec1.java:8)
Java Result: 1

Alguem saberia me explicar pq???

Amigão, ArrayIndexOutOfBoundsException quer dizer que você estourou o seu vetor, por um acaso na hora de compilar o seu programa, você passou mais de um parâmetro, por exemplo:

java Converte 10 5

OBS: Para inserir códigos no fórum use as tags disponibilizadas pelo mesmo :wink:

Abraços

Oi,

Você executa seu programa passando algum parametro para ele? Se não tá explicado, você tá tentando acessar um indice de um vetor que não tem elemento algum.

float dolar = Float.parseFloat(args[0]); 

isso não é ler do teclado, neste momento seu programa tá esperando que quando ele for chamado o primeiro parametro será uma String contendo o valor de um float válido.

O que você quer é:

BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Informe um valor: "); String texto = buf.readLine(); float dolar = Float.parseFloat(texto);

…e não use float!!!Use double, e, no caso de realmente lidar com unidades monetárias, BigDecimal( http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html ). :wink:

certo mas e se eu fizesse…

public class Converte
{
public static void main(String[] args)
{

System.out.println(args[0]);

float dolar = Float.parseFloat(args[0]);
float real = (dolar*3.50F);
System.out.println("O valor " +dolar + " em real eh: " +real);
}
}

esse print nao iria esperar ser digitado algum valor e atribuir ao vetor indice 0 ??

[quote=furacao123]certo mas e se eu fizesse…

public class Converte
{
public static void main(String[] args)
{

System.out.println(args[0]);

float dolar = Float.parseFloat(args[0]);
float real = (dolar*3.50F);
System.out.println("O valor " +dolar + " em real eh: " +real);
}
}

esse print nao iria esperar ser digitado algum valor e atribuir ao vetor indice 0 ??[/quote]

não, como o nome diz “print” se fosse para ler seria “read”

[quote=furacao123]certo mas e se eu fizesse…

public class Converte
{
public static void main(String[] args)
{

System.out.println(args[0]);

float dolar = Float.parseFloat(args[0]);
float real = (dolar*3.50F);
System.out.println("O valor " +dolar + " em real eh: " +real);
}
}

esse print nao iria esperar ser digitado algum valor e atribuir ao vetor indice 0 ??[/quote]

Fii vc está confundindo as coisas…
args[] armazena valores que são passados em linha de comando no momento em que se inicia uma aplicação em Java.
Por exemplo no Windows:
No prompt do vc executa da seguinte forma, claro, na pasta onde estiver seu Converte.class

C:\java Converte teste

Onde teste será o valor do seu args[0]
Como é um vetor, pode-se ainda passar mais de um valor!
Deu pra entender ± né?!

[]'s

Se vc quer ler um valor pelo teclado, aí existem outras formas, como por exemplo java.util.Scanner!

http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html

[]'s

Ok intendi vlw pela ajuda…to começando em java agora programo em php…por isso essas duvidas toscas…UAHHUA

mas intendi vlw pela ajuda

Zanden hauf as diz hutmanshuter as:

# BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));    
# System.out.print("Informe um valor: ");  
# String texto = buf.readLine();    
# float dolar = Float.parseFloat(texto); 

Shernering has put as.
Guten Tag.