Java 基于位置给出m或m值的制作方法

Java 基于位置给出m或m值的制作方法,java,methods,Java,Methods,因此,我必须创建一个方法,该方法将返回一个基于m或字符串中的m的值。到目前为止,我有这个 public static int mIndex(String x) { if (x.indexOf('M') >= 0) { return x.indexOf('M'); } if (x.indexOf('m') >= 0) { return x.indexOf('m'); } else { return -1;

因此,我必须创建一个方法,该方法将返回一个基于m或字符串中的m的值。到目前为止,我有这个

public static int mIndex(String x) {
    if (x.indexOf('M') >= 0) {
        return x.indexOf('M');
    }
    if (x.indexOf('m') >= 0) {
        return x.indexOf('m');
    } else {
        return -1;
    }
}
问题是,如果它是字符串中的第一个,它只返回M。它是否可以检测m或m,然后根据它给出一个值?

尝试以下方法:

String s = "MarshmallowmmMaM";
System.out.println("Index of 'M':");
int index = s.indexOf("M");
while (index >= 0) {
        System.out.println(index);
        index = s.indexOf("M", index + 1);
    }
System.out.println("Index of 'm':");
index = s.indexOf("m");
while (index >= 0) {
        System.out.println(index);
        index = s.indexOf("m", index + 1);
    }
输出:

“M”的索引: 0 13 十五

“m”的索引: 5. 11 十二,


对于类似的情况,正则表达式是您的朋友:

public static int mIndex(String x) {
    Matcher m = Pattern.compile("[mM]").matcher(x);
    if (m.find())
        return m.start();
    return -1;
}
试验

输出


如果您想检测字母M“upper&lower”每个箱子的第一个位置

公共类主{
公共静态int M_位置=-1;
公共静态int m_位置=-1;
公共静态void mIndex(字符串x){
int i=0;
而(i
您的问题令人困惑。。。详细说明您希望该计划实现的目标。“问题是,如果它在字符串中是第一个,它只返回M”这是一件坏事吗?你想得到'M'或'M'的所有索引吗?我想让程序告诉M或M的位置,以先到者为准。例如,如果我有一个字符串是“kamdkmm”,那么索引将是2,因为它首先到达小写的M,然后它会忽略M之后。
System.out.println(mIndex("kamdkMMM"));
System.out.println(mIndex("KAMDKmmm"));
System.out.println(mIndex("Hello World"));
2
2
-1
public class Main {
public static int M_POSITION = -1;
public static int m_POSITION = -1;
public static void mIndex(String x) {
    int i = 0;
    while (i < x.length()) {
        if (x.charAt(i) == 'M') {
            if (M_POSITION == -1)
                M_POSITION = i;
        } else if (x.charAt(i) == 'm') {
            if (m_POSITION == -1)
                m_POSITION = i;
        }
        ++i;
    }

}
public static void main(String[] args) {

    mIndex("adsm");
    System.out.println(m_POSITION);
    System.out.println(M_POSITION);
}
}