【问题标题】:Equality of String characters and usual character don't work / How to get indexes of those chars字符串字符和普通字符的相等性不起作用/如何获取这些字符的索引
【发布时间】:2020-08-21 08:14:38
【问题描述】:

我正在尝试将用户字符串的字符与也从用户获得的 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;
    }
}

【问题讨论】:

  • 我需要在没有 indexOf() 的情况下获取它
  • 您在getIndex 方法中检查了两次ch1。对吗?
  • 为什么你有两次if (text.charAt(i) == ch1) {?我假设两个比较之一必须针对 ch2。是笔误吗?
  • 哎呀对不起,如果 (text.charAt(i) == ch2) 应该是一个错字

标签: java string char compare


【解决方案1】:
private  static char ch1, ch2;
....
char ch1 = scan.next().charAt(0);

这不会分配给 ch1 而是在 getInput 方法范围内创建一个新变量,您需要这样做才能得到您期望的结果。

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

【讨论】:

  • 谢谢,这行得通,但是当它们出现在字符串中时,我需要获取这两个字符的索引,并且我只获取其中一个字符的索引,第二个是由于某些原因我应该忽略在这种情况下怎么办?
  • 当你说return i时,你就退出了这个方法。因此,如果第一个字符存在,您将永远不会检查第二个字符。您应该返回一个 int 数组,并将索引存储在其中,而不是单独返回每个索引的 if 子句。
  • 你能给我一个如何按照你的方式做的代码示例吗?
  • @DimaMargita 如果不使用数组或其他一些丑陋的方法,您不能同时返回 2 个索引,我建议让 getIndex 方法找到其中一个,然后调用它两次。 int getIndex(String text, char ch)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-25
    • 2014-12-02
    • 2021-07-19
    • 1970-01-01
    • 2019-07-22
    • 2012-06-29
    • 2021-08-10
    相关资源
    最近更新 更多