2015-02-27 3 views
-2

Привет всем им новые для Java и мне нужна помощь в моем кодеВыберите случайное письмо и изменить его (JAVA)

/** 
* @(#)Changing.java 
* 
* 
* @author 
* @version 1.00 2015/2/27 
*/ 

import java.util.Random; 

public class Changing { 

    public static void main(String[] args) { 
     Random generator = new Random(); 
     int num1; 
     String phrase = "This is a pencil"; 

     int len = phrase.length(); 
     num1 = generator.nextInt(len); 
     char c = phrase.charAt(num1, 'x'); 
     String mut1 = phrase.replace(c, 'x'); 
     System.out.println(mut1); 
    } 
} 

мне нужно сделать progrom, чтобы выбрать случайное письмо и изменить его на X

Спасибо

+0

В чем проблема? – Jens

+1

@Jens - this: 'char c = phrase.charAt (num1, 'x');': P – TheLostMind

+0

Как указано в @TheLostMind, вы на 100% уверены в том, что делает метод .charAt для строки? –

ответ

0

Изменить char c = phrase.charAt(num1, 'x'); в char c = phrase.charAt(num1);

Там нет методы Шара, который принимает два параметра.

1

Nfear правильно с удалением «х» от

char c = phrase.charAt(num1, 'x'); 

Вы также можете рассмотреть, если заявление, чтобы убедиться, что вы не до конца с «Thisxisxaxpencil» в качестве ответа. Если, конечно, вы не справитесь с этим выходом. Смотрите ниже код ....

import java.util.Random; 
public class Changing { 

public static void main(String[] args) { 
    Random generator = new Random(); 
    int num1; 
    String phrase = "This is a pencil"; 

    int len = phrase.length(); 
    char c = ' '; 
    while(c == ' '){ 
     num1 = generator.nextInt(len); 
     c = phrase.charAt(num1); 
    } 
    String mut1 = phrase.replace(c, 'x'); 
    System.out.println(mut1); 

} 

редактировать Вы можете также рассмотреть вопрос о создании массива символов вместо .Привернуть()

Это сделает это так, вы не замените каждый 's' или каждое 'i' в вашей строке. См ниже код ...

public static void main(String[] args) { 
    Random generator = new Random(); 
    int num1 = 0; 
    String phrase = "This is a pencil"; 

    int len = phrase.length(); 
    char c = ' '; 
    while(c == ' '){//to ensure we don't x out a space 
     num1 = generator.nextInt(len); 
     c = phrase.charAt(num1); 
    } 
    char[] phraseArray = phrase.toCharArray();//make string into a char[] 
    phraseArray[num1] = 'x';//replace char the random char index with 'x' This replaces the random letter for you. 
    String mut1 = new String(phraseArray);//change your char[] back into a string 
    System.out.println(mut1);//print results 
} 
+1

это все равно заменит все« i »на X., что не должно произойти. – WonderWorld

+1

работает как шарм . :) – WonderWorld

+0

Или используйте 'String sub1 = phrase.substring (0, num1) + 'X' + phrase.substring (num1 + 1);' если вы не хотите использовать charArray. – WonderWorld

0

Осмотрев и дело с несколькими проблемами, я обнаружил, что StringBuilder() делает именно то, что вы ищете.

Random generator = new Random(); 
    int num1 = 0; 
    StringBuilder phrase = new StringBuilder("This is a pencil"); 
    int len = phrase.length(); 
    char c = ' '; 
    while (c == ' ') { 
     num1 = generator.nextInt(len); 
     c = phrase.charAt(num1); 
    } 
    phrase.setCharAt(num1, 'X'); // <-- i think this is a nice way to do it. 
    //String sub1 = phrase.substring(0, num1) + 'X' + phrase.substring(num1+1); // Not so elegant as StringBuilder(). 
    System.out.println(phrase); 
Смежные вопросы