比较两个列表看是否有足够的字符?

Comparing a two lists to see if there are enough characters?

所以我在写一些代码,必须把一个桶作为一个字符列表桶:"AASDJBDHBDADBIWDBEDUBDCECM" 和一个标志:“热狗正在打折”,看看桶中是否有足够的字符完成标志。

我已经走到这一步了,但是当我尝试用不同的元素替换字符时,它不起作用。我似乎无法正确比较。

任何想法

Class 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);
    }
  }

Class 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();

    }

 }

Class 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();      

    }

 }

Class 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));
            }

        }

     }
  }

问题在于替换函数不会改变现有字符串(如@MadProgrammer 所述 - 字符串在 java 中是不可变的)。相反,它会产生另一个字符串。

所以只需替换

bucket.replace(promptuser.charAt(i), "in the");

bucket = bucket.replace(promptuser.charAt(i), "in the");

应该可以解决问题。虽然:

1) 这会非常低效 2) 我感觉你做错了。