Selecionar uma palavra em um texto no Java

4 respostas
java
F

Amigos, boa noite, sou novo aqui e também na linguagem Java.
tenho um texto na tela do meu programa como mostrado abaixo (somente um linha da musica)

F Gm7 Am7 Bb_C F Gm7 Am7 Bb_C
Deve haver um lugar dentro do seu coração Onde a paz brilhe mais que uma lembrança

Estou fazendo um programa em java que leia a parte de cima ou seja as cifras F Gm7 C …
o programa esta 90% pronto, mas esbarrei num problema que não sei resolver.

O programa lê a primeira letra da cifra, mas gostaria de saber como faço para pegar toda a cifra ou seja, pegar o F , Gm7, Am7 e coloca-las em uma variável, pois depois vou mostrar na tela a imagem da cifra.

Sei como pegar por exemplo o “G” usando o código abaixo, mas como eu faço para pegar o m e o 7 e colocar-los (Gm7) numa variável ???

RESUMINDO : Como eu pego em um texto com várias notas musicais uma nota por vez e as coloco em uma variavel.

Segue o que tenho pronto ate aqui:

private void btniniciarActionPerformed(java.awt.event.ActionEvent evt) {

// Cliquei no botão iniciar

char  nome;

char caracter;

String notal;

int Tamanho =0 ;

File arquivo = new File(C:\MUSIC PLAY\Musicas\”+txtpmusica.getText()+".txt");

try{

BufferedReader ler = new BufferedReader(new FileReader(arquivo));

String lin = ler.readLine();

nota = lin ;

//String[ ] notas = nota.split("");         tentei isso mas não tive exito, não sei direito o comando.

Tamanho =  lin.length(); esta linha é somente para eu saber o tamanho das linhas, mas não a uso.

while (lin !=null) {

for( int i=0 ; i<lin.length();  i++ ) {

caracter = lin.charAt(i);

if (lin.charAt(i) !=   ) {         // “só entra aqui se for um caracter encontrado”

i++;

if (lin.charAt(i) ==   ) {       // Pego a nota que tem somente 1 caracter.

nome= caracter;

É isso, espero ter cido claro, muito obrigado e fiquem com Deus.

Armando.

4 Respostas

F

Srs, gostaria de avisar que os espaços entre cada cifra, não possuem somente um espaço, pode ter 1,2,3 ou até mais, depende da musica, saiu assim porque o texto que escrevi foi formatado.
Obrigado.

S

O método split recebe uma expressão regular (regex) como parâmetro.

String[] notas = lin.split("\\s");
for (String nota : notas) {
    System.out.println(nota);
}
F

Oi Ricardo, boa tarde, primeiramente, muito obrigado pela ajuda, tentei fazer com o código que vc enviou e deu erro aqui.
Não sei usar bem este comando split, rodei o programa no modo DEBUG, primeiro tive este erro

" Não foi possível submeter o ponto de interrupção MethodBreakpoint [Formularios.FrmMusicaPlay].main ‘([Lstring;)V’, motivo: O método ‘main’ com assinatura ‘([Lstring;)V’ não existe na classe Formularios.FrmMusicaPlay"

Quando chegou na parte onde a rotina diz ;

System.out.println(nota); o programa não faz nada e da a mensagem ;

“Thread AWT-EventQueue-0 parado em FrmMusicaPlay.java:198.
Executando programa do usuário”

Segue abaixo a rotina que fiz, vc poderia fazer a rotina toda, se possível.

package Formularios;

import static Formularios.FrmVisMusicas.txtpmusica;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

public class FrmMusicaPlay extends javax.swing.JInternalFrame {

private Object reader;

public FrmMusicaPlay() {
           initComponents();
         
private void BtnsairActionPerformed(java.awt.event.ActionEvent evt) {                                        

    this.dispose();
}                                       

private void btniniciarActionPerformed(java.awt.event.ActionEvent evt) {            //Aqui começa a rotina  para pegar uma nota dentro da linha lida                           
    // Cliquei no botão iniciar
    try{
   BufferedReader ler = new BufferedReader(new FileReader(arquivo));
   String lin = ler.readLine();
   String[ ] notas = lin.split("\\s");
    for (String nota : notas) {
     System.out.println(nota);
}
   
}catch (Exception ex){
              
}                                          
            
    } //Fim do private void btniniciarActionPerformed  

// Variables declaration - do not modify                     
private javax.swing.JButton Btnsair;
private javax.swing.JButton btniniciar;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel lblnota;
private javax.swing.JTextArea txtareamus;
private javax.swing.JTextField txtnota;
// End of variables declaration                   

 } // Fim do Public Class

OBS : Ricardo, estou com esse problema a 2 semanas, por não saber direito “ainda” a linguagem Java e seus comandos, conheço o visual Basic 2019,
e por isso estou encontrando dificuldade e vc é a primeira pessoas de várias que pergunto sobre minha dúvida que me respondeu, para terminar o programa
só falta eu saber essa rotina. desculpa o trabalho, cheguei até a comprar o livro “Use a cabeça JAVA”, mas ainda não tive tempo para ler, como tenho pressa para acabar o programa que ira me ajudar a aprender Teclado musical, decidi faze-lo sem estudar antes. Muito obrigado e espero que vc possa me ajuda,

Armando Barbosa

F

Grande amigo Ricardo, FUNCIONOU !!!, amigo, muito obrigado, vc salvou meu dia, valeu mesmo, muito obrigado cara, vc é 10 ! Fique com Deus e que ele o proteja.

VALEUUUUUUUUUUUUUUUUUU !!!

Criado 24 de agosto de 2019
Ultima resposta 24 de ago. de 2019
Respostas 4
Participantes 2