Array e StringTokenizer

Oi,

se alguem puder me ajudar…

Usei o tokenizer para separar as palavras de uma frase e colocar cada uma numa posiçao de um array1, ele separa sem problema.

Depois quero comparar a string q estah no array1[0] com outra string q estah no array2[2], se forem iguais ele deve executar um comando…

No caso, as strings sao iguais, mas eu nao sei o q tem de errado q o comando soh eh executado qdo o array1 sop tem a posiçao 0, qdo ele tem mais de uma posiçao, ele nao executa o comando… msm q o array[0] seja igual ao array[2]…

nao sei se deu pra entender, quem sabe olhando o codigo fique mais facil…

bom, quem endenter e tiver paciencia de me explicar… please

import java.util.*;
import java.util.StringTokenizer;

public class Programa{

private String a="lista instala";// se 'a' for igual somente a palavra 'lista', o comando q imprime o sim eh executado, se houverem mais palavras alem do 'lista' como sendo a primeira palavra nao eh executado 

private String array1[],array2[]={“depende”,“instala”,“lista”};
private int i=0;

public Programa(){

array1=new String[2];

StringTokenizer st = new StringTokenizer(a);

while (st.hasMoreTokens()) { array1[i]=st.nextToken();
i++; }

System.out.println(array1[0]);//soh pra testar
System.out.println(array1[1]);//soh pra testar

if(array1[0]==array2[2]){System.out.println(“sim”);}
}
}

VALEU :smiley:

agora pra esclarecer a Bia, oq o New Radical quis dizer… se vc compara duas variaveis de referencia a objetos (no caso String) com o operador “==”, vc não esta se referindo ao conteudo da String, mas sim ao objeto no qual a referencia aponta, q no caso são diferentes, …use o método equals() como postado pelo New Radical, ou… equalsIgnoreCase() para não haver distinção de letras minusculas e maiusculas…

[]'s

Querida Biazinha… :wink: :wink: :wink:
Vc também pode utilizar o método compareTo( String s ) de String para fazer essas comparações. Utilize-o assim.

    if ( array1[0].compareTo( array2[1] ) == 0 )
        // COMANDO PRETENDIDO

Outra observação:

array2, pelo seu código, só tem 2 elementos e, em java, um array vai de 0 a n-1, ou seja, só existe array2[ 0 ] e array2[ 1 ].

[quote=“Wanderson”]
array2, pelo seu código, só tem 2 elementos e, em java, um array vai de 0 a n-1, ou seja, só existe array2[ 0 ] e array2[ 1 ].[/quote]

… onde “n” seria a variável length do array (array2.length)

aaaiiizôôôô! hahaehaehahe :verdeling: :verdeling: :verdeling: :verdeling: :verdeling:

matheus,

Acho que fui matemático demais, né?

Valeu o lembrete.

Ah, eu só queria ser carinhoso com ela… :beijo:
eheheh…

oi meninos, brigadao pelas dicas…

bah, nao pensei q a ajuda viria tao rapido… :smiley:

mas… nao querendo desapontar o pessoal do portal, to pensando em fazer o meu trabalho em c, eh q tah ficanco muito complicado, eu tenho q entregar segunda e nao to dando conta…

vcs saberiam me dizer se o String Tokenizer funciona na linguagem c, ou se tem outra equivalente q rode em c?

oi Wanderson,

valeu pelo tok, mas eu nao entendi… esse array:

array2[]={“depende”,“instala”,“lista”};

soh tem dois elementos?

[quote=“Bia”]oi Wanderson,

valeu pelo tok, mas eu nao entendi… esse array:

array2[]={“depende”,“instala”,“lista”};

soh tem dois elementos?[/quote]

array2 tem 3 elementos, q são 3 objetos string… nos indices 0, 1 e 2 (como em C/C++) … faz um tempão q não programo nada OO em C++ … não sei te responder sobre o StringTokenizer… :oops:, mas poste seu ultimo problema ai q a gente te ajuda a implementar no java! :slight_smile:

oi matheus,

brigada pela força… =P

eh q eu soh tenho uma pequena noçao em java… entao tipo… eu to perdendo muito tempo com a entrada de dados q eu nao sei praticamente nada e mal começei o problema em questao…

ainda nao perdi a esperança, mas jah to perdendo a paciencia… =P

bom, olha soh uma duvida q eu tenho:

bom, eu uso o bluej…
qual eh o codigo ou seja lah o q for q eu tenho q escrever para q o usuario escreva uma frase aperte enter e o programa reconhece a açao, ai o usuario escreve qtas frases de comandos ele quiser, ateh ele escrever o comando q encerra o programa…

eu nao sei como abrir um terminal ou seja lah o q for, q leia a frase do usuario em java…

tu conseguiu me entender…? … :smiley:

bem, isso é muito mais fácil de se fazer em java do em C Bia… vejamos, vc quer uma janela com um campo de texto, onde o usuário digite uma frase (independente do tamanho de palavras?) … tecle <ENTER> e o programa execute uma ação… a ação é esta ali da sua primeira duvida?

olha só, fiz esse exemplo agora, compile e rode… vc digita uma frase qualquer, aperta no botão, e ele mostra sua frase em um popup …, agora, é só implementar a funcionalidade do exemplo no método actionPerformed() …se tu digita “sair” o aplicativo finaliza, no caso eu usei um botão ao invéz de teclar <ENTER> … (fica mais bunitinho heheahea)

[code]import javax.swing.;
import java.awt.
;
import java.awt.event.*;

public class Bia extends JFrame {

JTextField frase;
JButton botao;

public Bia()
{
frase = new JTextField( 30 );
botao = new JButton( “go java! go!” );

  botao.addActionListener(

     new ActionListener() {

        public void actionPerformed( ActionEvent e )
        {
           if ( frase.getText().equals( "sair" ) )
              System.exit( 0 );

           JOptionPane.showMessageDialog( null, frase.getText() );
        }
     }
  );

  Container box = getContentPane();
  box.setLayout( new FlowLayout() );


  box.add( frase );
  box.add( botao );

  pack();
  show();

}

public static void main( String[] args )
{
Bia bia = new Bia();

  bia.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

}

}[/code]

eh seria isso…

olha soh, por exemplo o programa deve ler essas frases:

DEPENDE browser rede modem dialup
DEPENDE editor impressora driver
DEPENDE mail rede tcpip modem
INSTALA rede
INSTALA browser
LISTA
INSTALA mail
USANDO rede
INSTALA Cplusplus
RETIRA modem
RETIRA browser
FIM

cada uma corresponde a um comando escrito pelo usuario…
o cara escreve aperta enter, o programa executa o q ele pediu e assim vai ateh ele escrever FIM

(momento nao to preocupada com maiusvulas ou minusculas…, foi soh pra ressaltar… :smiley: )

BRIGADAO MATHEUS :smiley:

uma maneira rápida de fazer isso, seria implementar o actionPerformed() assim…:

if ( frase.getText().equalsIgnoreCase( "INSTALA browser" ) ) executar( "mozilla.exe" );

método executar()

[code]private void executar( String str )
{
try {

  Runtime.getRuntime().exec("C:\pastaDosBinarios\" + str);

} catch( Exception e ) {}
}[/code]

[size=“11”]ps: tão gritando la da cozinha pra mim ir jantar, hehehaeh, volto mais tarde pra continuar o post[/size]

hihihi

boa janta :smiley:

eu vou tentar fazer as tuas sugestoes

se nao der tudo bem… mas se der, volta, tah? :lol:

[size=“11”]opa, ja voltei, eu esperava ver a mesa cheia de coisa boa pra comer ja q quero sair esse sábado pra fazer uma festa e só tinha 2 sanduishes… :? [/size]

… então, continuando, oq vc quer esta mais parecido com um shell, como se fosse um DOS da vida, … o ideal seria se o aplicativo conseguisse ler o path do sistema, e fazer a procura pelo executavel digitado no comando no path…, nao sei se é possivel ler o path…, mas basicamente seria isso, esses comandos q vc quer dar não seriam exatamente algo feito com classes da API do Java, mas sim seriam os mesmos comandos q vc iria colocar no shell (ou no DOS) para executar … usando o Runtime para executá-los…

dois sanduiches prontinhos te esperando e tu reclama… bah, isso eh mordomia… se eu fosse esparar alguem fazer os meus sanduiches… ia ficar sem jantar… =P

sobre o programa eu te compreendi… eh um programinha muito simples, q sem de interface grafica precisa… mas eu nao tenho a minima ideia de como se mexe no shell e sei lah mais o q… por isso q eu pensei em fazer em c… o problema eh q eu nao somo funciona o tokenizer lah…

sei lah… acho q vou fazer com a interface(eh assim q se chama, neh?) q tu me mandou

neste caso, como a aplicação só tem a função de executar comandos… pessoalmente eu iria preferir fazer a interface dela em prompt mesmo…, e passaria as instruções (executar, deletar, oq seja) atravéz de opções pro método main() … como flags de qualquer outro comando do sistema…, oq pode ser feito perfeitamente em Java quanto em C … neste caso não sei te dizer como tokenizar em C, a não ser q eu procure meus livros de C/C++ no fundo das gavetas e comece a lê-los de novo…, mas ainda acredito q seja mais fácil em java… a API é mais rica.

naum mantheus! bem capaz q tu vai mexer nos teus livros empoeirados! =P

eu vou dar um tempo pq naum AQUENTO MAIS olhar pra esse monitor…

jah to ficando tonta… depois eu resolvo o q vou fazer, agora to sem condiçoes de raciocinio… =P

brigadao MESMO, por tudo!

mais tarde eu volto pra minha tortura…

bjaum