比较两个列表看是否有足够的字符?
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) 我感觉你做错了。
所以我在写一些代码,必须把一个桶作为一个字符列表桶:"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) 我感觉你做错了。