检查特定字符串

时间:2015-08-04 16:27:32

标签: java string for-loop char

我需要编写一个程序,其中 main 读取两个字符串作为输入:如果字符串具有相同的长度,那么它必须传递整个第一个字符串和第二个字符串的第一个字符串一个名为 find 的方法,它必须返回' true'如果角色在字符串上出现一次。如果长度不同,那么它会将整个第二个句子和第一个字符串的最后一个字符传递给 find 。最后, main 将提供方法返回的任何内容作为输出,因此它必须为true或false。我已经创建了整个 main ,并且它可以正常工作,但我不知道如何创建 find 方法。这是代码:

import java.util.Scanner;

public class Exercise {
    /*
     * public static boolean find(String... sentence, char... character) {
     *     // No, I can't use multiple varargs...
     * }
     */

    public static void main(String[] args) {
        String first, second;
        char firstChar, lastChar;
        Scanner keyboard = new Scanner(System.in);
        int lengthFirst, lengthSecond;
        boolean goal = true;

        first = keyboard.nextLine();
        lengthFirst = first.length();
        lastChar = first.charAt(lengthFirst - 1);

        second = keyboard.nextLine();
        lengthSecond = second.length();
        firstChar = second.charAt(0);

        System.out.println("Length 1: " + lengthFirst); // Those lines are test lines.
        System.out.println("Length 2: " + lengthSecond); // They're here just to check
        System.out.println("Char 1: " + firstChar); // if everything else works.
        System.out.println("Char 2: " + lastChar);

        if (lengthFirst == lengthSecond) {
            goal = find(first, firstChar);
            System.out.println("Goal is: " + goal);
            System.exit(0);
        } else
            goal = find(second, lastChar);
        System.out.println("Goal is: " + goal);
        System.exit(0);
    }
}

我在考虑使用varargs选项,使用varargs作为String,将另一个作为char,然后使用' for'在方法内循环检查角色是否出现,一切都很容易在我脑海中......但经过一些研究我发现这将是浪费时间,因为我不能使用两个{{ 1}}在同一个方法上。 varargs循环理念有效,但我无法弄清楚如何仅传递正确的for和右String。我应该如何将它们传递给方法,而不同时传递它们?

编辑:不,这不是重复。我允许循环,另一个问题不是。此外,我的问题是我应该如何传递多个变量,但后来只使用了一些。这是一个例子:

字符串长50,因此该方法只需要使用' first'作为字符串,' firstChar'作为Char。

4 个答案:

答案 0 :(得分:0)

private static boolean find(String str, char Char) {
        for(int i=0;i<str.length();i++)
            if(str.charAt(i)==Char)
                return true;
        return false;
    }

这有望帮助......

答案 1 :(得分:0)

查找将只包含

private boolean find(String subject, char first) {
    return subject.indexOf(first) > -1;
}

答案 2 :(得分:0)

您可以使用String.indexOf()

  

返回第一次出现的字符串中的索引   指定的字符。如果出现值为ch的字符   此String对象表示的字符序列,然后是索引   (以Unicode代码单位)返回第一个此类事件,如果   在这个字符串中没有出现这样的字符,然后返回-1。

 public static boolean find(String str, char ch){
        if(str.indexOf(ch) == -1)
            return false;
        return true;
  } 

正如您所想,此功能不需要四个参数。对于这两种情况,您可以将此函数与两个参数一起使用:

  goal = find(first, firstChar);
  goal = find(second, lastChar);

编辑我认为您误解了参数的映射方式。

如果你有像

这样的功能
      public static boolean find(String str, char ch){
              //do something
      }

您无需使用相同参数findstr来呼叫ch,我的意思是find(str,ch)。您可以使用任何名称调用它们,例如:

        goal = find(s,c); // s is a string and c is a char

        goal = find(a,b); // a is a string and b is a char

当您调用find(s,c)时,s将映射到您的函数中的第一个参数strc将映射到您的第二个参数ch {1}}。

这就是您可以使用单个功能同时调用find(first, firstChar)find(second, lastChar)的原因。

答案 3 :(得分:0)

看起来像你在寻找的是:

if (second.indexOf(c) == -1) return false; //char c not found
return true;