所以我写了一些代码,并且必须把一个桶作为一个字符列表:“AASDJBDHBDADBIWDBEDUBDCECM”和一个标志:“热狗正在出售”,看看桶中是否有足够的字符来完成标志。
我已经做到这一点,但是当我尝试用不同的元素替换字符时,它不想工作。我似乎无法正确比较。
任何想法
第1类
package question2;
import java.util.Scanner;
public class ShopSign {
//public String statement;
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
PromptUser promptuser= new PromptUser(input);
Bucket bucket=new Bucket(input);
new Checker(bucket.Bucket,promptuser.message);
}
}
第2类
package question2;
import java.util.Scanner;
public class Bucket {
public String Bucket;
public Bucket(Scanner input){
System.out.print("Enter the bucket of characters");
Bucket= input.nextLine();
}
}
第3类
package question2;
import java.util.Scanner;
public class PromptUser {
public String message;
public PromptUser(Scanner input){
System.out.print("Enter proposed message:");
message= input.nextLine();
}
}
第4类
package question2;
public class Checker {
public Checker(String bucket,String promptuser){
for (int i=0; i<promptuser.length();i++){
if(bucket.indexOf(promptuser.charAt(i)> -1)){
bucket.replace(promptuser.charAt(i), "in the");
}
else{
System.out.print("User out: " + promptuser.charAt(i));
}
}
}
}
答案 0 :(得分:0)
问题在于,替换funciton不会改变现有的字符串(正如@MadProgrammer所提到的 - 字符串在java中是不可变的)。相反,它会产生另一个字符串。
所以简单地替换
bucket.replace(promptuser.charAt(i), "in the");
到
bucket = bucket.replace(promptuser.charAt(i), "in the");
应该做的伎俩。虽然:
1)这将是非常低效的 2)我觉得你解决任务错误。