Java程序打印字符串中的第一个非重复字符

标签 java arrays

public static void main(String[] args) {
        String str = "XXYZZA";

        char[] a = str.toCharArray();
        int count=0;
        for (int i = 0; i < a.length; i++) 
        {
            if (a[i] == a[i++]) 
            {
                count++;

            } 
            else
                System.out.println(a[i++]);

        }

    }

“else”部分中的打印语句没有被执行。 所需的输出应该是

Y
A

最佳答案

好的,首先也是最重要的是,请正确缩进,这对理解代码有很大帮助。

其次,由于两个原因,if (a[i] == a[i++]) 不是正确的方法

  1. 您的 for 循环将开始跳过 i 值,因为您使用的是一元运算符,它将直接作用于操作数
  2. ArrayIndexOutOfBounds:一旦您的 i 达到其最大值 a.length - 1,您的测试条件 i++ 将尝试访问位于index a.length,正如您可能已经猜到的那样,它不存在。

您需要的是某种排序算法,而无需实际保存排序序列。

关于Java程序打印字符串中的第一个非重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50809676/

相关文章:

java - 如何将 byte[] 保存为 java.sql.Clob?

java - 错误 : Cannot find getter for field in Android Room

java - 表达式的类型必须是数组类型但它解析为 String

arrays - 快速将整数插入数组

java - 无法将 JSON 解析为 recyclerview

c++ - 为嵌套数组分配引用变量指定的内存?

java - 在第一次迭代时返回正确,在任何其他迭代中返回不正确,java

java - 如何在 lambda 函数中传递多个 get 参数?

Java 垃圾收集 GcInfo.getDuration() 将单位从毫秒更改为微秒

c - 在二维数组中分配内存时出现问题