我对java非常陌生,我需要一种方法,用另一个字母替换任何用户输入的中间字母。无论用户输入"abcdef“、”青蛙“还是”比萨饼“,如果我愿意,它都会将中间字母改为"Q”。我在这方面很新,所以我也不知道如何使用数组。我考虑使用replaceCharAt()和str.length(),但我不知道如何将它们与未知的输入一起使用。任何帮助都将不胜感激。
编辑:我已经包括了我的班级和我的司机类,以显示我正在处理的事情。我需要将输入的dnaCode的中间字母改为"Q“。
到目前为止,我的班级:
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
//************************************************************************我的驱动程序类(由于分配而无法编辑):
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发布于 2016-12-04 17:18:35
首先,您应该检查userInput参数是否有效,我的意思是它的长度应该是奇数并且大于2。
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);整个方法应该是这样的:
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);
}发布于 2016-12-04 16:36:22
你可以试试这个;)
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);发布于 2016-12-04 16:34:47
我想这个..。
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"));
}https://stackoverflow.com/questions/40960798
复制相似问题