首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不知道单词的情况下改变用户输入的中间字符?

如何在不知道单词的情况下改变用户输入的中间字符?
EN

Stack Overflow用户
提问于 2016-12-04 16:26:15
回答 3查看 307关注 0票数 1

我对java非常陌生,我需要一种方法,用另一个字母替换任何用户输入的中间字母。无论用户输入"abcdef“、”青蛙“还是”比萨饼“,如果我愿意,它都会将中间字母改为"Q”。我在这方面很新,所以我也不知道如何使用数组。我考虑使用replaceCharAt()str.length(),但我不知道如何将它们与未知的输入一起使用。任何帮助都将不胜感激。

编辑:我已经包括了我的班级和我的司机类,以显示我正在处理的事情。我需要将输入的dnaCode的中间字母改为"Q“。

到目前为止,我的班级:

代码语言:javascript
运行
复制
public class ComputerMicrobe
{

  public String name;
  public String dnaCode;

//***********************************************************************
  //perameters

  public ComputerMicrobe(String newDnaCode, String newName)
  {
   this.name(newName);
   this.dnaCode(newDnaCode);
  }// end perameters



//*************************************************************
 // default
 public ComputerMicrobe()
 {
  this("12345", "ABCDEF");

 }// end default

//****************************************************************

 // accessors
 public String getName()
 {
  return this.name;
 }// end name accesseor

 public String getDnaCode()
 {
  return this.DnaCode;
 }// end dnaCode accessor

//***********************************************************************

 public void setName(String newName)
 {
  this.name = newName;
 }// end name mutator

 public void setDnaCode(String newDnaCode)
 {
  this.dnaCode = newDnaCode;
 }// end dnaCode mutator

//************************************************************************

我的驱动程序类(由于分配而无法编辑):

代码语言:javascript
运行
复制
public static void main (String[] args)
{
  Scanner stdIn = new Scanner(System.in);
  String name;    //Auxiliar ComputerMicrobe name
  String dNACode;   //Auxiliar ComputerMicrobe DNA Code
  ComputerMicrobe a, b, c; // ComputerMicrobe objects

  System.out.println("Enter name of first ComputerMicrobe");
  name = stdIn.next();
  System.out.println("Enter DNA Code for first ComputerMicrobe");
  dNACode = stdIn.next();
  a = new ComputerMicrobe(name, dNACode);

  System.out.println("Enter name of second ComputerMicrobe");
  name = stdIn.next();
  System.out.println("Enter DNA Code for second ComputerMicrobe");
  dNACode = stdIn.next();
  b = new ComputerMicrobe(name, dNACode);

  System.out.println("Initial set of ComputerMicrobes");
  System.out.println(a);
  System.out.println(b);

  System.out.println("ComputerMicrobe a after mutation");
  a.mutate();
  System.out.println(a);

  System.out.println("ComputerMicrobe b after swap");
  b.swap();
  System.out.println(b);

  System.out.println("ComputerMicrobe c after reproduction of a and b");
  c = a.reproduce(b);
  System.out.println(c);

  System.out.println("ComputerMicrobe b after mutation and swap");
   b.mutate().swap();
  System.out.println(b);

  System.out.println("ComputerMicrobe b after invasion of swap a");
  b.invadedBy(a.swap());
  System.out.println(b);
} // end main
EN

回答 3

Stack Overflow用户

发布于 2016-12-04 17:18:35

首先,您应该检查userInput参数是否有效,我的意思是它的长度应该是奇数并且大于2。

代码语言:javascript
运行
复制
if(userInput.length() %2 ==0 || userInput.length()<3)
         throw new IllegalArgumentException("userInput length should be odd and greater than 2");

然后你可以做你想做的事

代码语言:javascript
运行
复制
int middleIndex = userInput.length()/2;
return userInput.substring(0,middleIndex) + 'Q' + userInput.substring(middleIndex+1);

整个方法应该是这样的:

代码语言:javascript
运行
复制
    public String replaceCharaterAT(String userInput) {
         if (userInput.length() % 2 == 0 || userInput.length() < 3)
             throw new IllegalArgumentException("userInput length should be odd and greater than 2");
         int middleIndex = userInput.length() / 2;
         return userInput.substring(0, middleIndex) + 'Q' + userInput.substring(middleIndex + 1);
}
票数 1
EN

Stack Overflow用户

发布于 2016-12-04 16:36:22

你可以试试这个;)

代码语言:javascript
运行
复制
BufferedReader z=new BufferedReader(new InputStreamReader(System.in));
        String ch=(z.readLine());
        char valeur = 'Q';  //chat for replace
        String res="";
        for(int i=0;i<ch.length()/2;i++){
            res+=ch.charAt(i);
        }
        res+=valeur;
        for(int i=1+ch.length()/2;i<ch.length();i++){
            res+=ch.charAt(i);
        }   
        System.out.println(res);
票数 0
EN

Stack Overflow用户

发布于 2016-12-04 16:34:47

我想这个..。

代码语言:javascript
运行
复制
public static String replaceChar(String word, String key)
{

    int length = word.length();


    int center = length/2;

    String before = word.substring(0, center - 1);

    String after = word.substring(center + 1, length);


    return before + key + after;
}


public static void main(String[] args) {
    System.out.println(replaceChar("abcdef", "q"));
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40960798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档