【问题标题】:Can you use charAt();'s to compare values in a string?您可以使用 charAt();'s 比较字符串中的值吗?
【发布时间】:2019-10-19 02:13:52
【问题描述】:

我目前正在为类编写 Java 代码,并且正在尝试弄清楚如何在用户输入上实现运行长度编码。我遇到的主要问题是将第一个字母与下一个字母进行比较,并将该字母与下一个字母进行比较,依此类推,看看它们是否是同一个字母。目前我有:

        System.out.print("Enter a string: ");
    String s1 = reader.nextLine();

    int sum = 0;
    char ast = '*';
    //System.out.println("Run length encoded version of string: ");


    for (int counter = 0; s1.charAt(counter) <= s1.length()-1; counter++) {

        for (int j = 0; s1.charAt(counter) == s1.charAt(j)+1; j++) {

            sum++;
            counter++;

        }

        if (sum >= 4) {

            System.out.print(ast + s1.charAt(counter) + sum);

        }

        else {
            System.out.print(s1.charAt(counter));
        }


    }

我知道这个大问题来自哪里以及为什么它不起作用但是,即来自

for (int j = 0; s1.charAt(counter) == s1.charAt(j)+1; j++) {

        sum++;
        counter++;

    }

segment,因为它只是无限的。有没有合适的方法来做到这一点?教授提到它可以在没有循环的情况下完成,虽然我可以看到它是可能的,但我看不到它很短。任何帮助将不胜感激,谢谢!

【问题讨论】:

  • s1.charAt(j)+1?为什么要给 字符加一个? 你的意思是给位置加一个吗?那将是s1.charAt(j+1)
  • 欢迎来到 Stack Overflow。请阅读the help pagesthe SO tour、阅读how to ask good questions,以及this question checklist。请记住始终添加适当的语言标签,否则有些人会跳过您的问题。
  • @paxdiablo 哦,我明白了。我认为它类似于 length()-1 ,它会修改它的位置。你是对的!谢谢你。 :)

标签: java string-comparison


【解决方案1】:
String str="ayyusaab";
char[] ch=str.toCharArray();

for(int i=0;i<ch.length-1;i++){
   for(int j=i+1;j<ch.length-1;j++){
      if(ch[i]==ch[j]) {
         System.out.println(ch[i]+" at Index "+i +"with j at "+j);
      }
   }
}

【讨论】:

    猜你喜欢
    • 2020-02-05
    • 1970-01-01
    • 2023-03-17
    • 2013-08-10
    • 2018-02-04
    • 2012-03-16
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    相关资源
    最近更新 更多