Java 字符串和常用字符don'的相等性;t work/如何获取这些字符的索引

Java 字符串和常用字符don'的相等性;t work/如何获取这些字符的索引,java,string,char,compare,Java,String,Char,Compare,我试图将用户字符串的字符与从用户那里得到的2个字符进行比较,如果其中一个字符在特定索引中等于该字符串的字符,那么我需要打印该索引 import java.util.Scanner; public class TestIndexOf { private static String text; private static char ch1, ch2; public static void main(String[] args) { TestIndex

我试图将用户字符串的字符与从用户那里得到的2个字符进行比较,如果其中一个字符在特定索引中等于该字符串的字符,那么我需要打印该索引

import java.util.Scanner;

public class TestIndexOf {

    private static String text;
    private  static char ch1, ch2;

    public static void main(String[] args) {
        TestIndexOf  test = new TestIndexOf();
        test.getInput();
        System.out.println(test.getIndex(text, ch1, ch2));
    }

    public static void getInput() {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter word and chars: ");
        text = scan.nextLine();
      
        char ch1 = scan.next().charAt(0);
        char ch2 = scan.next().charAt(0);

    }

    public static int getIndex(String text, char ch1, char ch2) {
        for (int i = 0; i < text.length(); i++) {
            if (text.charAt(i) == ch1) {
                return i;
            }
            if (text.charAt(i) == ch1) {
                return i;
            }
        }
        return -1;
    }
}
import java.util.Scanner;
公共类测试{
私有静态字符串文本;
私有静态字符ch1,ch2;
公共静态void main(字符串[]args){
TestIndexOf test=新的TestIndexOf();
test.getInput();
System.out.println(test.getIndex(text,ch1,ch2));
}
公共静态void getInput(){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入单词和字符:”);
text=scan.nextLine();
char ch1=scan.next().charAt(0);
char ch2=scan.next().charAt(0);
}
公共静态int-getIndex(字符串文本、字符ch1、字符ch2){
对于(int i=0;i
这将不会分配给ch1,而是在getInput方法范围内创建一个新变量,您需要这样做才能得到预期的结果

ch1 = scan.next().charAt(0);
这将不会分配给ch1,而是在getInput方法范围内创建一个新变量,您需要这样做才能得到预期的结果

ch1 = scan.next().charAt(0);

变量ch1和ch2定义了两次。首先,它们在类中声明为静态字段,但未初始化。其次,它们被声明为
getInput的局部变量并在那里初始化,但是作为局部变量,它们不能从方法外部访问。

您的变量ch1和ch2被定义了两次。首先,它们在类中声明为静态字段,但未初始化。其次,它们被声明为
getInput的局部变量,并在那里初始化,但是作为局部变量,它们不能从方法外部访问。

我需要在没有indexOf()的情况下获取它。您可以在
getIndex
方法中检查
ch1
两次。这是对的吗?为什么你有
if(text.charAt(i)==ch1){
两次?我假设两次比较中的一次必须与ch2比较。这是一个打字错误吗?哦,对不起,这是一个打字错误如果(text.charAt(i)==ch2)我需要在没有indexOf()的情况下得到它你在你的
getIndex
方法中检查了
ch1
两次。是这样吗?为什么你有
if(text.charAt(i)==ch1{
两次?我假设这两个比较中的一个必须与ch2比较。这是一个打字错误吗?哦,对不起,这是一个打字错误,if(text.charAt(i)==ch2)谢谢,这是工作,但是当这两个字符出现在字符串中时,我需要获取它们的索引,我只获取其中一个字符的索引,第二个字符由于某些原因被忽略。在这种情况下,我应该做什么?当你说
return I
时,你退出该方法。因此,如果第一个字符出现,你将永远不会检查第二个字符。你应该返回一个int数组,并将索引存储在其中,而不是返回每个索引各自的if子句。你能给我一个代码示例吗?如果不使用数组或其他难看的方法,你不能同时返回两个索引,我建议让getIndex方法找到其中一个然后调用它两次。
intgetindex(字符串文本,char-ch)
谢谢,这很有效,但是当这两个字符出现在字符串中时,我需要获取它们的索引,并且我只获取其中一个字符的索引,第二个字符由于某些原因被忽略,在这种情况下我应该做什么?当您说
return I
时,您退出该方法。因此,如果第一个字符出现,您将永远不会检查是否存在s第二,你应该返回一个int数组,并将索引存储在其中,而不是单独返回每个索引的if子句。你能给我一个代码示例吗?如果不使用数组或其他难看的方法,你不能同时返回两个索引,我建议让getIndex方法找到其中一个然后调用两次。
int-getIndex(字符串文本,char-ch)