Pessoal estou tentando fazer uma calculadora IMC usando os recursos básicos do AWT,é o seguinte tenho que mostrar numeros de vexes que ela foi usado,para cada resultado guardar em uma lista e depois que eu apertar exibir mostrar o 1- peso -altura e sua classe(magro,obeso,etc).A principio esta dando erro na conversão de txt para double…quem puder me ajudar fico grato.
[code]package br.faetec.imc.inicio;
import java.awt.*;
/**
*
@author Maycon
*/
public class IMC extends Frame {
Panel container;
Button botão1, botão2, botão3;
TextField txt1, txt2, txt3;
Label Label1, Label2, Label3,Label;
List lista;
public IMC() {
setLayout(new BorderLayout());
container = new Panel();
botão1 = new Button("Calcular");
botão2 = new Button("Exibir");
botão3 = new Button("Sair");
txt1 = new TextField(5);
txt2 = new TextField(20);
txt3 = new TextField(20);
Label = new Label("Calculando I.M.C. ");
Label1 = new Label("Quantidade");
Label2 = new Label("Peso");
Label3 = new Label("Altura");
lista = new List(5);
setTitle("Calcular I.M.C.");
reshape(500, 100, 180, 350); //tamanho da tela
add("Center", container);
container.add(Label);
container.add(Label1);
container.add(txt1);
container.add(Label2);
container.add(txt2);
container.add(Label3);
container.add(txt3);
container.add(botão1);
container.add(botão2);
container.add(lista, BorderLayout.CENTER);
container.add(botão3);
show();
}
public boolean action(Event evt, Object componente) {
double peso = Double.parseDouble(txt2.getText());
double altura = Double.parseDouble(txt1.getText());
double result = peso / (altura * altura);
String grau = null;
if (componente.equals("Exit")) {
System.exit(0);
}
if (componente.equals("Calcular")) {
grau = verIMC(result);
}
if (componente.equals("exibir")) {
lista.setName( "" + peso + "" + altura + "é" + grau);
}
return true;
}
public String verIMC(double result) {
String grau = null;
for (int p = 0; p <= 10; p++) {
txt1.setText("" + p);
if (result < 18.5) {
grau = "magro";
}
if (18.5 < result & result < 24.9) {
grau = "saudavel";
}
if (25 < result & result < 29.9) {
grau = "sobrepeso";
}
if (30 < result & result < 34.9) {
grau = "obesidade Um";
}
if (35 < result & result < 39) {
grau = "obesidade dois";
}
if (40 <= result) {
grau = "obesidade tres";
}
}
return grau;
}
public static void main(String[] args) {
new IMC();
}
}[/code]
samuk1
Agosto 26, 2012, 1:02pm
#2
Cara Primeira coisa edita ai e coloca Formatação Code! Pq senão ninguem vai ficar pedendo tempo lendo algo sem formatação!
Desculpa!Ja arrumei valew pelo toque
samuk1
Agosto 26, 2012, 2:20pm
#4
Ta primeiro Corrija os Seguintes erros:
1º
double altura = Double.parseDouble(txt1.getText());
\\Txt 1 não é quantidade? Então Seria :
double altura = Double.parseDouble(txt3.getText());
2º
[code]if (componente.equals(“Exit”)) {
\“Exit” não existe né… Cuidado com Ctrl+C Ctrl+V…
if (componente.equals(“Sair”))
if (componente.equals(“exibir”)) {
\ exibir ´ta minusculo
if (componente.equals(“Exibir”)) {
{[/code]
Corrija Estes e veja se o Problema COntinua…
Cara obrigado !Muita falta de atenção mesmo.Bom não esta funcionando ainda esta dando esse erro
run:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2
at br.faetec.imc.inicio.IMC.action(IMC.java:87)
at java.awt.Component.handleEvent(Component.java:6534)
at java.awt.Window.postEvent(Window.java:2487)
at java.awt.Component.postEvent(Component.java:4957)
at java.awt.Component.postEvent(Component.java:4957)
at java.awt.Component.dispatchEventImpl(Component.java:4667)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
Tive que alterar:
[code]import java.awt.*;
/**
*
@author Maycon
*/
public class IMC extends Frame {
Panel container;
Button botão1, botão2, botão3;
TextField txt1, txt2, txt3;
Label Label1, Label2, Label3, Label;
List lista;
public IMC() {
setLayout(new BorderLayout());
container = new Panel();
botão1 = new Button("Calcular");
botão2 = new Button("Exibir");
botão3 = new Button("Sair");
txt1 = new TextField(5);
txt2 = new TextField(20);
txt3 = new TextField(20);
Label = new Label("Calculando I.M.C. ");
Label1 = new Label("Quantidade pessoas");
Label2 = new Label("Peso");
Label3 = new Label("Altura");
lista = new List(5);
setTitle("Calcular I.M.C.");
reshape(500, 100, 230, 350); //tamanho da tela
add("Center", container);
container.add(Label);
container.add(Label1);
container.add(txt1);
container.add(Label2);
container.add(txt2);
container.add(Label3);
container.add(txt3);
container.add(botão1);
container.add(botão2);
container.add(lista, BorderLayout.CENTER);
container.add(botão3);
show();
}
public boolean action(Event evt, Object componente) {
if (componente.equals(“Sair”)) {
System.exit(0);
}
if (componente.equals("Calcular")) {
double peso;
double altura;
int r = Integer.parseInt(txt1.getText());
for (int p = 0; p <= r; p++) {
double[] result = new double[r];
String[] grau = new String[r];
peso = Double.parseDouble(txt2.getText());
altura = Double.parseDouble(txt3.getText());
result[p] = peso / (altura * altura);
grau[p] = verIMC(result[p]);
if (componente.equals("Exibir")) {
for (p = 0; p <= 10; p++) {
lista.setName("" + p + peso + "" + altura + "é" + grau[p]);
}
}
}
}
return true;
}
public String verIMC(double par) {
String grau;
if (par < 18.5) {
grau = "magro";
return grau;
}
if (18.5 < par & par < 24.9) {
grau = "saudavel";
return grau;
}
if (25 < par & par < 29.9) {
grau = "sobrepeso";
return grau;
}
if (30 < par & par < 34.9) {
grau = "obesidade Um";
return grau;
}
if (35 < par & par < 39) {
grau = "obesidade dois";
return grau;
}
if (40 <= par) {
grau = "obesidade tres";
return grau;
}
return "";
}
public static void main(String[] args) {
new IMC();
}
}
[/code]
samuk1
Agosto 26, 2012, 8:48pm
#6
Seu Array recebe a quantidade de Pessoas.
int r = Integer.parseInt(txt1.getText());
Mas o Array sempre começa do zero.
Dai :
//substitua isso :
for (int p = 0; p <= r; p++) {
//por isso:
for (int p = 0; p < r; p++) {
Poque se vc colocar p<=r ele vai tentar criar 1 array a mais do que ele Suporta.
Cara Valew pela atenção consegui dar uns ajustes e tah belezinha!Obrigado pela atenção!Wlew