Duvida com manipulação de String

7 respostas
F

Estou com algumas dúvidas sobre manipulação de String, meu programa não tá fazendo o que eu quero.
Abaixo o enunciado e meu código-fonte.

Enunciado do exercício:
Faça uma aplicação que receba o nome completo do usuário e depois troque seu ultimo sobrenome por “Silva”. Mostre o resultado na tela.

Código-fonte:

import java.util.Scanner; public class MC24 { public static void main(String[] args) { String nome = ""; Scanner ler = new Scanner(System.in); System.out.print("Digite seu nome completo: "); nome = ler.nextLine(); nome.trim();// retira os espaços em branco do inicio e do fim da String int c = nome.lastIndexOf(" "); String ultimo =""; ultimo += nome.substring(c); System.out.println(ultimo); String seila = " silva"; nome.replaceFirst(ultimo,seila); System.out.println("Nome: " + nome); } }

Alguém sabe o que estou fazendo de errado?

7 Respostas

ViniGodoy

Strings são imutáveis. Ou seja, os métodos dela não alteram seu conteúdo. Mas eles retornam uma nova string, com o conteúdo alterado.

Sua lógica quase toda está certa, exceto pela linha 14, onde vc assume que o substring irá alterar o valor da String nome. O correto é:

nome = nome.replace(ultimo, seila);
ViniGodoy

Ps.

Você não precisa inicializar as variáveis String com “” para usa-las. Já que você vai fazer leituras em seguida, inicialize-as com essas leituras:

import java.util.Scanner; public class MC24 { public static void main(String[] args) { Scanner ler = new Scanner(System.in); System.out.print("Digite seu nome completo: "); String nome = ler.nextLine(); nome = nome.trim();// retira os espaços em branco do inicio e do fim da String int c = nome.lastIndexOf(" "); String primeiros = nome.substring(0, c); System.out.println("Nome: " + primeiros + " Silva"); } }

F

Valeu ViniGodoy.
Aproveitando o tópico, vo postar uma nova duvida =D

Enunciado

Códiigo-fonte

public class M30 { public static void main(String[] args) { double m[][] ={0,72,396,90,215, 15,0,417,75,30, 39,41,0,46,11, 90,75,86,0,105, 115,302,371,105,0}; double mult = 1 , menor = 9999; for (int i = 0 ; i < 5 ; i++){ for (int j = 0 ; j < 5 ; j++){ if (m[i][j] < menor){ menor = m[i][j]; } if (m[i][j] != 0){ mult *= m[i][j]; } } m[i][i] = mult/menor; mult=1; menor = 9999; } for (int i = 0 ; i < 4 ; i++ ){ for (int j = 0 ; j < 5 ; j++){ System.out.printf("%4.3lf ",m[i][j]); } System.out.println(); } } }

Fica dando erro incompatible types da linha 3 a linha 11. O que to errando nesse codigo?

M

Cara seguinte como é um array com mais de uma dimensao ao invés disso double

double m[][] = {1,2,3}

faça isto

double m[][] = {{1,2,3}}

voce vai ter um array de dentro de outro array

ViniGodoy

Como ele falou, seu array deveria criado assim ser assim:

double m[][] ={ {0,72,396,90,215}, {15,0,417,75,30}, {39,41,0,46,11}, {90,75,86,0,105}, {115,302,371,105,0} };

Como são 2 dimensões, vc precisará de um parênteses externo (para a primeira dimensão) e outro mais interno (para a segunda).

PS: Vc cursa o que na UTFPR?

F

Curso Tecnologia em Análise e Desenvolvimento de Sistemas no campus Cornélio Procópio.
Já passou pelo “cefetão” tambem? hahahha

ViniGodoy

fabiorsj:
Curso Tecnologia em Análise e Desenvolvimento de Sistemas no campus Cornélio Procópio.
Já passou pelo “cefetão” tambem? hahahha

Sim, me formei em Tecnologia em Informática com Ênfase em Redes, aqui em Curitiba.
Na época era CEFET ainda.

Foi um curso bom, serviu para eu descobrir que a última coisa que quero ser na vida é gerente de redes.

Criado 16 de setembro de 2010
Ultima resposta 17 de set. de 2010
Respostas 7
Participantes 3