Ajuda com JoptionPaine - RESOLVIDO

4 respostas
W

Gostaria de ajuda para converter o codigo a seguir de JoptionPaine para Println (linha de comando)

import javax.swing.*; public class ExpresaoMath { public static void main(String[] args) { Expressao pilha = new Expressao(6); String expr = JOptionPane.showInputDialog("Digite uma expressão algébrica no formato {[()]}"); for (int i = 0; i <= expr.length() - 1; i++) { if (pilha.getDelimitador(expr.charAt(i))) { pilha.empilha(expr.charAt(i)); } } String aux = pilha.retornaFormato(); if (aux.equals("{[()]}")) { System.out.println("Expressão Correta"); } else { System.out.println("Expressão Incorreta"); } } } class Expressao { protected String elementos[]; private int topo; protected char[] delimitadores = {'{', '[', '(', ')', ']', '}'}; public Expressao(int tamanho) { topo = -1; elementos = new String[tamanho]; } public void empilha(char x) { topo++; elementos[topo] = String.valueOf(x); } public void desempilha() { topo--; } public String elementoTopo() { return elementos[topo].toString(); } public boolean pilhaCheia() { return (topo == elementos.length - 1); } public boolean listaVazia() { return (topo == -1); } public boolean getDelimitador(char valor) { boolean ok = false; for (int i = 0; i <= delimitadores.length - 1; i++) { ok = delimitadores[i] == valor ? true : false; if (ok) { break; } } return ok; } public String retornaFormato(){ String formato = ""; for (int i = 0; i <= elementos.length-1; i++) { formato += elementos[i]; } return formato; } }

4 Respostas

Andre_Rosa

O método println() apenas imprime uma mensagem na tela, ele não faz input. Você pode usar um objeto do tipo Scanner, por
exemplo, para fazer a leitura da String. Por exemplo:

Scanner in = new Scanner(System.in); //criação do objeto System.out.println("Digite uma expressão algébrica no formato {[()]}"); String expr = in.nextLine(); //faz a leitura

danielso2007
Scanner scanner = new Scanner(System.in);

String expr = scanner.next();
W
Andre Rosa:
O método println() apenas imprime uma mensagem na tela, ele não faz input. Você pode usar um objeto do tipo Scanner, por exemplo, para fazer a leitura da String. Por exemplo:
Scanner in = new Scanner(System.in); //criação do objeto
System.out.println("Digite uma expressão algébrica no formato {[()]}");  
String expr = in.nextLine(); //faz a leitura

Então meu código ficou assim.
import java.util.Scanner;
public class ExpresaoMath {
	public static void main(String[] args) {
		Expressao pilha = new Expressao(6);
		
		Scanner in = new Scanner(System.in);   
		System.out.println("Digite uma expressão algébrica no formato {[()]}\n");     
		String expr = in.nextLine(); 
					
		for (int i = 0; i <= expr.length() - 1; i++) {
			if (pilha.getDelimitador(expr.charAt(i))) {
				pilha.empilha(expr.charAt(i));
			}
		}
		String aux = pilha.retornaFormato();
		if (aux.equals("{[()]}")) {
			System.out.println("Expressão Correta");
		} else {
			System.out.println("Expressão Incorreta");
		}
	}
}
class Expressao {
	protected String elementos[];
	private int topo;
	protected char[] delimitadores = {'{', '[', '(', ')', ']', '}'};
	public Expressao(int tamanho) {
		topo = -1;
		elementos = new String[tamanho];
	}
	public void empilha(char x) {
		topo++;
		elementos[topo] = String.valueOf(x);
	}
	public void desempilha() {
		topo--;
	}
	public String elementoTopo() {
		return elementos[topo].toString();
	}
	public boolean pilhaCheia() {
		return (topo == elementos.length - 1);
	}
	public boolean listaVazia() {
		return (topo == -1);
	}
	public boolean getDelimitador(char valor) {
		boolean ok = false;
		for (int i = 0; i <= delimitadores.length - 1; i++) {
			ok = delimitadores[i] == valor ? true : false;
			if (ok) {
				break;
			}
		}
		return ok;
	}
	public String retornaFormato(){
		String formato = "";
		for (int i = 0; i <= elementos.length-1; i++) {
			formato += elementos[i];             
		}
		return formato;
	}
}

Obrigado pela ajuda.

L

Edit e coloque “RESOLVIDO”

abrxx

Criado 24 de agosto de 2011
Ultima resposta 24 de ago. de 2011
Respostas 4
Participantes 4