Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

public String noXYZ(String s) returns a string in which all the letters x, y, an

ID: 3925204 • Letter: P

Question

public String noXYZ(String s) returns a string in which all the letters x, y, and z have been removed. You must use a loop.

Example :

input : "I zwant ya xcat"

output : "I want a cat"

Here's my code and got know idea what is the problem

public String noXYZ(String s)
{
int i = 0;
s = s.toLowerCase();
s = s.substring(i, i+1);
do
{
if ( s.contains("x"))
{
s = s.replace("x", "");
}
if ( s.contains("y"))
{
s = s.replace("y", "");
}
if ( s.contains("z"))
{
s = s.replace("z", "");
}
i ++;
}
while (i < s.length());
return s;
}

Explanation / Answer

The code given by you is doing a wrong logic. Please find below the errors :

Here you have defined s = s.substring(i, i+1); which is nothing but returns one character, and inside while condition you have given while (i < s.length()); that is it will executes only when i is < s.length(), here s length is 1. Thus the loop will execute only once, and it returns only first character.

Instead of this, you can use the following implementation, which is probably easy :