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.
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
String frase = “Amanhã é domingo”;
System.out.println(numPalavras(frase));
}
public static int numPalavras(String frase) {
String[] palavras = frase.split(" ");
return frase.length();
}
}
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 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Informe um nome: ");
String frase = input.nextLine();
String numPalavras = numPalavras(frase);
System.out.println(numPalavras(frase));
}
public static String numPalavras(String frase) {
String[] palavras = frase.split(" ");
return frase.replaceAlll(' ','#');
}
Não entendi muito bem o problema mas vou tentar ajudar.
Na primeiro você deveria fazer: String[] palavras = frase.split(" "); return palavras.length();
Ainda não roda, agora deu isso:
exit status 1
Main.java:11: error: cannot find symbol
return palavras.length();
^
symbol: method length()
location: variable palavras of type String[]
1 error
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.
Assim, o programa pede pro usuário inserir uma data no formato dd/mm/aaaa e o programa imprimir ela com o mês por extenso tipo:
entrada: 14/08/2018
Saída 14 de agosto de 2018.
Eu tentei fazer assim depois de pesquisar:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.printfln(“Informe sua data de nascimento:\n”);
String dataRecebida = input.nextLine();
System.out.println("Você nasceu em "+ data);
}
public static String getDataPorExtenso(dataRecebida){
DateFormat dfmt = new SimpleDateFormat(“EEEE, d ‘de’ MMMM ‘de’ yyyy”);
return dfmt.format(data);
}
}
Primeiro, você dá alguns erros de sintaxe, como por exemplo troca o nome das variaveis:
String dataRecebida = 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).
static String getDataPorExtenso(String dataRecebida) {
Format formatter = new SimpleDateFormat("dd MMMM yyyy");
String dataFormatada = formatter.format(new Date());
return dataFormatada.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));
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.
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);
exit status 1
Main.java:6: error: cannot find symbol
Scanner input = new Scanner(System.in);
^
symbol: class Scanner
location: class Main
Main.java:6: error: cannot find symbol
Scanner input = new Scanner(System.in);
^
symbol: class Scanner
location: class Main
Main.java:14: error: cannot find symbol
Format formatter = new SimpleDateFormat(“dd MMMM yyyy”);
^
symbol: class Format
location: class Main
Main.java:15: error: cannot find symbol
String dataFormatada = formatter.format(new Date());
^
symbol: class Date
location: class Main
4 errors
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 é:
Apresentou esse erro agora na linha nove que é a que destaquei aí, o código tá assim.
import java.util.Scanner;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println(“Informe sua data de nascimento:\n”);
String dataRecebida = input.nextLine();
String getDataPorExtenso = getDataPorExtenso(dataRecebida);
System.out.println("Você nasceu em " + getDataPorExtenso(dataRecebida));
}
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.
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;