如何在java中使用for循环在字符串中查找字符串?

时间:2013-10-30 23:25:43

标签: java if-statement for-loop

我正在尝试使用for循环和if语句查找用户输入s是否包含第二个用户输入s1。我只想使用方法.charAt().length而不是.indexOf来查找s1是否在s内。在我发现s是否包含s1后,我要么返回.charAt() s1开始s,或者返回-1 s1内部根本不会发生s

例如,s = abcdefghi& s1 = def,它会返回3

这是我的代码到目前为止: 它会返回0-1

package javaapplication5;

import java.util.Scanner;
class myStrings {
String s, s1;

void setMyStrings(String str, String str1) {
    s = str;
            s1 = str1;
}

int find() {
    int i, j;
    int r = -1;
    char ns = s1.charAt(0);
    int sp;
    int count = 1;

    for (i = 0; i < s.length(); i++){
        if (s.charAt(i) == ns) {
            sp = i;//starting point
            for (j = i+1; j < s1.length(); j++) {
                ns += 1;
                if (s.charAt(j) == ns){
                    j++;
                    count++;
                }
                if (count == s1.length())
                    r = sp;
            }
        }   
    }
    System.out.println(r);
    return r;
   }
}
public class JavaApplication5 {
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    myStrings setS = new myStrings();

    String s, s1;

    System.out.print("Enter s:");
    s = in.nextLine();
    System.out.print("Enter s1:");
    s1 = in.nextLine();

    setS.setMyStrings(s1, s1);
    setS.find();

}

}

3 个答案:

答案 0 :(得分:1)

:D,这是因为你的主要方法中的这一行

setS.setMyStrings(s1, s1);

您添加相同的值。

如果我看起来不错,这一行

for (j = i+1; j < s1.length(); j++)

应写成:

for (j = i+1; j < i+1+s1.length(); j++)

这一行也错了

ns += 1;

ns是char,这意味着,例如将char A更改为B。你需要这样的东西:

ns = s1.charAt(j-i)

答案 1 :(得分:0)

所以你试图自己实现String.indexOf(String)

开始的地方(或者欺骗的方式,取决于你的目标是什么)将是在类String中查看实际的JDK实现:它委托给一个包私有静态方法你想做什么:

static int indexOf(char[] source, int sourceOffset, int sourceCount,
                   char[] target, int targetOffset, int targetCount,
                   int fromIndex) {
    // ...

答案 2 :(得分:0)

Java不是C,你不能用

转到下一个char
ns += 1;

您必须执行以下操作:

if (s.charAt(j) == s1.charAt(j-sp)){