Calculadora IMC com AWT

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]

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

Ta primeiro Corrija os Seguintes erros:

double altura = Double.parseDouble(txt1.getText()); \\Txt 1 não é quantidade? Então Seria : double altura = Double.parseDouble(txt3.getText());

[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]

:smiley:
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