首页 > 解决方案 > Java程序打印字符串中的第一个非重复字符

问题描述

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

标签: javaarrays

解决方案


好的,首先,请适当的缩进,对理解代码有很大帮助。

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

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

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


推荐阅读