Estou desenvolvendo um trabalho e explicando bem rápido ele tem que receber uma palavra e fazer isso:
Ex.
texto
te ex xt to
Fiz isso já e consegui colocar dentro de um vetor, pois vou comparar esse vetor com outro para fazer o cálculo de n-gram para calcular a similaridade entre as palavras.
Eu por curiosidade minha já estudei um pouco de orientação a objetos onde criava alguns métodos e realizava algumas tarefas.
A minha dúvida é, como posso transformar esse código em um método para que receba uma String(palavra) e retorne um vetor conforme está a saída desse código e como vou chamar ele quando precisar?
Como fica esse código abaixo adaptando para utilizar esse método?
importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(String[]args){StringwordOne,wordTwo,wordFinalOne,wordFinalTwo;charwordAux;intcont,contIn,contDgCompartilhado;ScannerleT=newScanner(System.in);wordFinalOne="";//recebendo a primeira palavraSystem.out.print("Informe a primeira palavra: ");wordOne=leT.nextLine();for(cont=0;cont<wordOne.length()-1;cont++){wordAux=wordOne.charAt(cont);wordFinalOne+=wordAux;if(cont<wordOne.length()){wordAux=wordOne.charAt(cont+1);wordFinalOne+=wordAux;}wordFinalOne+=" ";}StringvWordOne[]=wordFinalOne.split(" ");for(cont=0;cont<vWordOne.length;cont++){System.out.print(vWordOne[cont]+" ");}System.out.print("\n");//recebendo a segunda palavra para comparaçãoSystem.out.print("Informe a segunda palavra: ");wordTwo=leT.nextLine();wordFinalTwo="";for(cont=0;cont<wordTwo.length()-1;cont++){wordAux=wordTwo.charAt(cont);wordFinalTwo+=wordAux;if(cont<wordTwo.length()){wordAux=wordTwo.charAt(cont+1);wordFinalTwo+=wordAux;}wordFinalTwo+=" ";}StringvWordTwo[]=wordFinalTwo.split(" ");for(cont=0;cont<vWordTwo.length;cont++){System.out.print(vWordTwo[cont]+" ");}System.out.print("\n");contIn=0;contDgCompartilhado=0;for(cont=0;cont<vWordOne.length;cont++){for(contIn=0;contIn<vWordTwo.length;contIn++){if(vWordOne[cont].equals(vWordTwo[contIn])){contDgCompartilhado++;}}}System.out.println(contDgCompartilhado);}}
luistiagos
É a mesma coisa que o junior postou porem naquele caso vc tem 1 chamada neste caso terá 2 chamadas:
ScannerleT=newScanner(System.in);System.out.print("Informe a primeira palavra: ");Stringword=leT.nextLine();String[]vWordOne=metodo(word);System.out.print("Informe a segunda palavra: ");word=leT.nextLine();String[]vWordTwo=metodo(word);System.out.print("\n");contIn=0;contDgCompartilhado=0;for(cont=0;cont<vWordOne.length;cont++){for(contIn=0;contIn<vWordTwo.length;contIn++){if(vWordOne[cont].equals(vWordTwo[contIn])){contDgCompartilhado++;}}}System.out.println(contDgCompartilhado);
javatar
Ele está dando apenas um erro agora.
importjava.util.Scanner;publicclassTeste{Stringword,wordFinalOne;charwordAux;intcont;publicString[]metodo(Stringword){wordFinalOne="";for(cont=0;cont<word.length()-1;cont++){wordAux=word.charAt(cont);wordFinalOne+=wordAux;if(cont<word.length()){wordAux=word.charAt(cont+1);wordFinalOne+=wordAux;}wordFinalOne+=" ";}StringvWordOne[]=wordFinalOne.split(" ");for(cont=0;cont<vWordOne.length;cont++){System.out.print(vWordOne[cont]+" ");}returnvWordOne;}publicstaticvoidmain(String[]args){intcont,contIn,contDgCompartilhado;Stringword;ScannerleT=newScanner(System.in);System.out.print("Digite a primeira palavra: ");word=leT.nextLine();String[]vWordOne=metodo(word);System.out.print("Digite a primeira palavra: ");word=leT.nextLine();String[]vWordTwo=metodo(word);contIn=1;contDgCompartilhado=0;for(cont=0;cont<vWordOne.length;cont++){for(contIn=contIn;contIn<vWordOne.length;contIn++){if(vWordOne[cont].equals(vWordOne[contIn])){contDgCompartilhado++;}}contIn+=1;}System.out.println(contDgCompartilhado);}}
O erro está dizendo:
[color=red]Cannot make a static reference to the non-static method metodo(String) from the type Teste[/color]
Para corrigir esse erro, declarei as variáveis dentro do método e mudei ele para Static.
Mas isso não é viável pois vou precisar usar essas variáveis de novo em outro método.
javatar
Consegui resolver:
Osvaldo_bergw=newOsvaldo_berg();System.out.print("Digite a primeira palavra: ");word=leT.nextLine();String[]vWordOne=w.metodo(word);System.out.print("Digite a segunda palavra: ");word=leT.nextLine();String[]vWordTwo=w.metodo(word);