如何确定字符串是否可以生成另一个字符串

时间:2014-05-02 14:07:33

标签: java string contains

我正在使用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语句。为什么呢?

4 个答案:

答案 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个字符串并将其转换为小写
  • 取第二个字符串的字符
  • 迭代这些字符
  • 对于每个字符,如果它不存在于第一个字符串中,则应该返回false

答案 2 :(得分:0)

您可以在拍摄前尝试flushing输入,这样如果有更多字符,如换行符,(\ n)则会被忽略

答案 3 :(得分:0)

你可以使用

if(cadena.indexOf(cadena1) >= 0){
    //todo
}