Нужно выбрать случайную букву в строке и изменить ее - PullRequest
0 голосов
/ 04 марта 2012

Может кто-нибудь показать мне, как я буду вводить строку в метод, и он выберет одну букву строки и изменит ее на букву, которую я выберу. Например, я бы назвал ChangeString(hello), и он бы возвратил строку, которая изменила одну букву, например "Hel_o".

(Правка) Я пробовал setCharAt () и вводил случайное число, но я не знаю, как заставить его изменить только одну букву, оставить оставшуюся часть строки в покое и дать мне измененная буква и новая строка.

(Правка 2) Хорошо, я что-то понял. Спасибо всем!

Это не домашняя работа, это приложение, над которым я работаю в Eclipse для рынка! Мне просто нужна помощь.

Ответы [ 4 ]

4 голосов
/ 04 марта 2012

Нет метода setCharAt() - см. javadoc .Это потому, что строки в Java неизменны - вы не можете их изменить, вы можете создавать только новые.

Вы можете создать новую строку из фрагментов старого (используяsubstring()) и вставьте своего нового персонажа в середину, или вы можете создать StringBuilder , который можно изменить, а затем восстановить String из этого.

3 голосов
/ 04 марта 2012

Сначала преобразуйте строку в массив символов. Затем сгенерируйте случайное целое число между 0 и длиной строки. Установите символ в этом индексе массива на подчеркивание. Вернуть новую строку с измененным массивом символов.

String changeString(String s)
{
   char[] characters = s.toCharArray();
   int rand = (int)(Math.random() * s.length());
   characters[rand] = '_';
   return new String(characters);
}
1 голос
/ 04 марта 2012

Здесь я считаю, что это делает то, что вы ищете.

import java.io.*;
import java.util.Random; 
import java.lang.reflect.Field; 
public class XRandom{ 
public static void changeString(String entry,char change){ 
int length=entry.length();
char[] cArray = entry.toCharArray();
    cArray[randomNumber(0,length)]=change;
System.out.println(cArray);

    }

public static void main(String[] args) {
    System.out.println("Please enter a String:");
 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
       String name = null;
       try {
         name = br.readLine();
       } catch (IOException e) {
         System.out.println("Error!");
         System.exit(1);
       }
       char un='_';
       changeString(name,un);
    }


    public static int randomNumber(int min, int max) {
        return min + (new Random()).nextInt(max - min);
    }
}

только что написал это.

0 голосов
/ 04 марта 2012

Может быть, класс StringBuffer поможет вам с его charAt() методом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...