我正在使用contains来查看String(A)是否可以生成字符串(B)(均来自用户)
package trabajogrupal;
import java.util.Scanner;
public class TrabajoGrupal {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
char resp1 = 's';
String resp2 = "";
while (resp1 == 's') {
System.out.println("Ingrese la primer cadena ");
String cadena = in.nextLine().toLowerCase();
System.out.println("Ingrese la segunda cadena ");
String cadena1 = in.nextLine().toLowerCase();
if (cadena.contains(cadena1)) {
System.out.println("La cadena " + cadena + " puede generar la cadena " + cadena1);
} else {
System.out.println("La cadena " + cadena + " no puede generar la cadena " + cadena1);
}
System.out.println("Desea continuar ");
resp2 = in.nextLine();
resp2 = resp2.toLowerCase();
resp1 = resp2.charAt(0);
}
}
}
第一个字符串应该包含第二个字符串,但会发生的是它继续进入else语句。为什么呢?
答案 0 :(得分:1)
逐步查看字符串B中的所有字符,并检查字符是否在字符串A中。
使用A.indexOf(B中的每个字符)执行此操作。只要它不返回 - 1该字符在字符串A中。
答案 1 :(得分:0)
您可以检查是否可以使用字符串A的字符制作字符串B,而不是像这样:
System.out.println("First string");
String firstInput = geek.nextLine().toLowerCase();
System.out.println("Second string");
String secondInput = geek.nextLine().toLowerCase();
char[] secondInputCharacters = secondInput.toCharArray();
boolean contains = true;
for(int i = 0; i < secondInputCharacters.length; ++i)
{
if(firstInput.indexOf(secondInputCharacters[i]) < 0)
contains = false;
}
这是做什么的:
答案 2 :(得分:0)
您可以在拍摄前尝试flushing输入,这样如果有更多字符,如换行符,(\ n)则会被忽略
答案 3 :(得分:0)
你可以使用
if(cadena.indexOf(cadena1) >= 0){
//todo
}