GetNat

5 respostas
D

Gente estou com problemas …

Tenho trabalho para entregar onde o professor escrever parte do código e temos que terminá-lo, mas esta dando o seguinte erro na linha abaixo:

static Integer GetNat(String msg, int liminf, int limsup)

{

String strin = new String(); // string para entrada de dados - um natural

Boolean erro =false;            // indica erro na consistência da entrada de dados

try { // protege bloco de comando e desvia para o comando catch

do { // loop eterno até receber um natural válido

erro = false;

strin = “”;

strin = JOptionPane.showInputDialog(null,msg,titulo,JOptionPane.QUESTION_MESSAGE);

// consistência sobre pressionar botão Cancel ou fechar ao diálogo

if (strin == null) return null;

// consistência sobre pressionar botão OK sem texto

if (strin.length() == 0) {

JOptionPane.showMessageDialog(null,"      Erro :   Caixa de diálogo Vazia !",

titulo,JOptionPane.ERROR_MESSAGE);

erro = true;

continue;

}

// consistência sobre o conteúdo do texto ser número natural (sem sinal)

for (int i=0 ; erro == false && i &lt strin.length(); i++)

if (strin.charAt(i) &lt 0 || strin.charAt(i) &gt 9) {

JOptionPane.showMessageDialog(null,"      Erro :   Não é um Natural !",

titulo,JOptionPane.ERROR_MESSAGE);

erro = true;

}

// consistência sobre o intervalo do valor númerico

if (erro == false && (Integer.valueOf(strin).intValue() &lt liminf ||

Integer.valueOf(strin).intValue() &gt limsup)) {

JOptionPane.showMessageDialog(null,"       Erro :  Fora do Intervalo !",

titulo,JOptionPane.ERROR_MESSAGE);

erro = true;

} // if

} while (erro == true);

} catch (Exception e)    { System.out.println(BUG na na Entrada de Dados !); System.exit(0); }

return Integer.valueOf(strin).intValue();

} // GetNat

}// do

[color=red]Parte1.java:112: illegal start of expression
static Integer GetNat(String msg, int liminf, int limsup)
^[/color]

Vcs poderiam me ajudar?

5 Respostas

M

kra, o erro n está ai… pode ateh tentar botar um public antes do metodo… mas axo q o erro n esta no metodo e sim em algo anterior a ele… anexa o codigo todo ai pra q o pessoal possa olhar direito

H

Olá, douglas_oliv21

Provavelmente é algum erro de sintaxe anterior a esta linha…

Verifique (ou poste) as últimas linhas anteriores a este método.

D

[color=blue][/color]Segue o código completo…

// pacotes importados na aplicação
import java.lang.*; // pacote importado por default (usa as classes
// System e Math
import java.util.Date; // importa a classe Date (não usa a class Sacanner)
import java.lang.Math; // classes System e Math
import java.util.Date; // classe Date (não usa a class Sacanner) e Stack
import javax.swing.JOptionPane; // classes JFrame e JLabel
import java.text.SimpleDateFormat; // classe SimpleDateFormat e DecimalFormat
import java.text.DecimalFormat; // classe SimpleDateFormat e DecimalFormat

class EDGxxSI2y_EDA02_SimRecTH extends Object // é opcional colocar extends Object
{
// referências para objetos com escopo global ao aplicativo

static Integer MAXDISCO = 5; // limite para entrada de dados
static String titulo = "EDGxxSI2y : EDA02_SimRec2TH"; // título das caixas de diálogos
static StringBuffer RegAti = new StringBuffer(); // lista de Registro Ativação
static StringBuffer Movimentos = new StringBuffer(); // lista dos Movimentos
static String movimentos = new String();

public static void main (String args[]) // main em aplicativo deve ser public static
{
// formata a data atual e mostra identificação do programa

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");

String data = formatter.format(new Date()) ;

String str = new String(); // string para saída e entrada de dados

String identificacao = "Estruturas de Dados (e suas manipulações) - Prof. Leigo                \n\n" +

"              Simulação do Mecanismo da Recursão x Pilhas          \n\n" +

"       Puzzle Torres de Hanói (Brahma) - Towers of Hanoi           \n\n" +

"                               EDGxxSI2y_EDA02SimRecTH.java        \n\n" +

"              44.659 - Douglas de Oliveira - Participação 50 %          \n"    +

"              99.999 - Nome Completo2 - Participação xx %          \n\n" +

"                                 JCreator em "  +    data   + "    \n\n" +

"      GUI simples sem tratamento de Evento - Versão Demo           \n\n" ;

JOptionPane.showMessageDialog(null,identificacao,titulo,JOptionPane.INFORMATION_MESSAGE);

do { // faça até pressionar Cancel em qualquer caixa de diálogo para entrada

Integer opcao = GetNat("              Escolha a opção desejada        \n\n" + 
                             "       [1]   Versão - Recursiva            \n" + 
                             "       [2]   Versão - Simula Recursiva \n" + 
                             "       [3]   Avaliação do Tempo            \n\n" + 
                             "          Cancel finaliza o Programa ! \n\n",1,3); 

   if (opcao == null) System.exit(0); // pressionou Cancel ou fechou o diálogo
do { // faça até pressionar Cancel ou Botton No em OptionPane (GUI)

try { // protege bloco de comando e desvia para o comando catch

do {

erro = false;

opcao = "";

opcao = JOptionPane.showInputDialog("   EDGxxSI2y - Torres de Hanói (Brahma)\n" +

"Qual é a quantidade de discos entre 1 e " +

MAXDISCO + "? \n\n");

// consistência da entrada
if (opcao.length() == 0) {
           JOptionPane.showMessageDialog(null,"EDGxxSI2y - Caixa de texto nula.");
           erro = true;
   	      }
       else 
          if (opcao.length() == 1 && str.charAt(0) == '0') {
              JOptionPane.showMessageDialog(null,"EDGxxSI2y - Zero não aceita.");
              erro = true;
             } 
          else
             {
              for (int i=0 ; i &lt opcao.length() ; i++)
                   if (opcao.charAt(i) &lt '0' || opcao.charAt(i) &gt '9') {
                   JOptionPane.showMessageDialog(null,"EDGxxSI2y - Não é um natural.");
                   erro = true; 
                   break;
                  }  
              if (erro == false && Integer.valueOf(opcao).intValue() &gt MAXDISCO) {
                  JOptionPane.showMessageDialog(null,"EDGxxSI2y - Natural fora do intervalo.");
                  erro = true;
                 } 
             } // else
      } while (erro == true || opcao.length() == 0);
} catch (Exception e) {

JOptionPane.showMessageDialog(null,

"EDGxxSI2y - Cancel Finaliza.");

System.exit(0);

}

int n = Integer.valueOf(opcao).intValue(); // natural para quantidade de discos

iniciou = new Date();
inicio = new Date().getTime();

}  while (true) ; // loop eterno até pressionar Cancel ou fechar diálogo de entrada

} // método main

H

Se este for exatamente o seu método main, tá fácil de resolver…

Observe que você tem 03 “do” e apenas 02 “while”.

do { // faça até pressionar Cancel em qualquer caixa de diálogo para entrada 
    ...
      do { // faça até pressionar Cancel ou Botton No em OptionPane (GUI) 
    ...
          do { 
    ...
          } while (erro == true || opcao.length() == 0); 
    ...         
    } while (true) ; // loop eterno até pressionar Cancel ou fechar diálogo de entrada

Aí, o compilador tenta pegar os proximos comandos para concluir o loop, mas eles geram erro da sintaxe…

Marky.Vasconcelos

PS: poste seus códigos entre as tags [code] e [/ code]

Criado 25 de agosto de 2007
Ultima resposta 25 de ago. de 2007
Respostas 5
Participantes 4