Estou tendo problema com duas questões, já mexi muito nelas e não consegui consertar o problema. Gostaria de saber o que estou fazendo errado:
Essa primeira abaixo deveria me retornar o número de palavras que a frase contém. No caso o exemplo que inseri deveria me retornar três, mas retorna 16. Direto sei que daria, mas preciso fazer usando função, mas ainda tenho dificuldade.
Essa segunda deveria receber uma frase e substituir todos os espaços entre as palavras por “#”. A frase tem que ser inserida pelo usuário. Ex: Amanhã é domingo.
Saída: Amanhã#é#domingo.
import java.util.Scanner;
public class Main {
publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);System.out.println("Informe um nome: ");Stringfrase=input.nextLine();StringnumPalavras=numPalavras(frase);System.out.println(numPalavras(frase));}publicstaticStringnumPalavras(Stringfrase){String[]palavras=frase.split(" ");returnfrase.replaceAlll(' ','#');}
Não entendi muito bem o problema mas vou tentar ajudar.
Na primeiro você deveria fazer: String[] palavras = frase.split(" "); return palavras.length();
E a segunda é para mim fazer isso: Faça uma função que recebe uma frase e substitui todas as ocorrências de espaço por“#”. Faça também uma função para realizar a entrada de dados. A saída de dados deve
ser feita no programa principal.
M
Solucao aceita
M4UR0_Dev1 like
Errei no return palavras.length();, na verdade é return palavras.length;
Quanto ao segundo codigo o unico erro que vejo é: return frase.replaceAlll(' ','#'); que deve ser substituido por return frase.replaceAll(" ","#");
V
Vii
Puxa cara, valeu mesmo!! Resolveu os dois. Você poderia me ajudar com um problema que to tendo com data também? Se não for incômodo.
publicstaticvoidmain(String[]args){Scannerinput=newScanner(<ahref="http://System.in">System.in</a>);System.out.printfln(“Informesuadatadenascimento:\n”);StringdataRecebida=input.nextLine();System.out.println("Você nasceu em "+data);}
Primeiro, você dá alguns erros de sintaxe, como por exemplo troca o nome das variaveis:
StringdataRecebida=input.nextLine();System.out.println("Você nasceu em "+data);
Supostamente voce queria usar dataRecebida. Se conseguir instalar uma IDE como eclipse talvez o ajudasse… Para alem disso nao usou o metodo getDataPorExtenso(String dataRecebida).
staticStringgetDataPorExtenso(StringdataRecebida){Formatformatter=newSimpleDateFormat("dd MMMM yyyy");StringdataFormatada=formatter.format(newDate());returndataFormatada.replaceAll(" "," de ");}
Penso que não tenha forma de usar o “de” no formatador, então decidi separar por espaços e depois substitui-los pelo “de”. Depois disto para funcionar basta invocar o metodo, substituindo o System.out.println("Você nasceu em "+ data); por System.out.println("Você nasceu em " + getDataPorExtenso(dataRecebida));
V
Vii
Essa linha tá dando erro, quando compilo aparece isso: exit status 1
Main.java:9: error: ‘;’ expected String getDataPorExtenso = String getDataPorExtenso(dataRecebida);
^
1 error
Não sei porque. E eu concordo com você, é que meu pc não suporta, mas consegui comprar um bom note, to só esperando chegar para instalar o eclipse.
publicstaticvoidmain(String[]args){Scannerinput=newScanner(<ahref="http://System.in">System.in</a>);System.out.println(“Informesuadatadenascimento:\n”);StringdataRecebida=input.nextLine();StringgetDataPorExtenso=StringgetDataPorExtenso(dataRecebida);System.out.println("Você nasceu em "+getDataPorExtenso(dataRecebida));}
staticStringgetDataPorExtenso(StringdataRecebida){Formatformatter=newSimpleDateFormat(“ddMMMMyyyy”);StringdataFormatada=formatter.format(newDate());returndataFormatada.replaceAll(" "," de ");}}
Aqui.
M
M4UR0_Dev
O erro está aqui: String getDataPorExtenso = String getDataPorExtenso(dataRecebida);
Não precisa dizer que é uma String após o sinal de =, basta no inicio. Sendo assim fica: String getDataPorExtenso = getDataPorExtenso(dataRecebida);
Esse problema parece ser devido a não ter importado a classe scanner. Para importar use import java.util.Scanner;.
De qualquer forma o codigo tinha um pequeno erro, o metodo getDataPorExtenso correto é:
staticStringgetDataPorExtenso(StringdataRecebida){SimpleDateFormatformatter=newSimpleDateFormat("dd MMMM yyyy");try{dataRecebida=formatter.format(newSimpleDateFormat("dd/MM/yyyy").parse(dataRecebida));}catch(ParseExceptione){e.printStackTrace();}returndataRecebida.replaceAll(" "," de ");}
publicstaticvoidmain(String[]args){Scannerinput=newScanner(<ahref="http://System.in">System.in</a>);System.out.println(“Informesuadatadenascimento:\n”);StringdataRecebida=input.nextLine();StringgetDataPorExtenso=getDataPorExtenso(dataRecebida);System.out.println("Você nasceu em "+getDataPorExtenso(dataRecebida));}
staticStringgetDataPorExtenso(StringdataRecebida){SimpleDateFormatformatter=newSimpleDateFormat(“ddMMMMyyyy”);try{dataRecebida=formatter.format(newSimpleDateFormat(“dd/MM/yyyy”).parse(dataRecebida));}catch(ParseExceptione){e.printStackTrace();}returndataRecebida.replaceAll(" "," de ");}}
M
M4UR0_Dev1 like
Tem que importar ParseException: import java.text.ParseException;
V
Vii
Deu certo! Obrigado. Só queria saber mais uma coisa, como eu faço para o mês imprimir em português? Tenho que usar outro import? Tá imprimindo em inglês.
M
M4UR0_Dev1 like
O meu já está em portugues, no entanto tenta isso: SimpleDateFormat formatter = new SimpleDateFormat("dd MMMM yyyy", new Locale("pt", "PT"));
e importa isso: import java.util.Locale;
V
Vii1 like
Agora foi. Tudo certo! Muito obrigado pela ajuda e pela paciência em me explicar tudo. Tenha um bom domingo! o/