Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打印字符串中第一个非重复字符的Java程序_Java_Arrays - Fatal编程技术网

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

打印字符串中第一个非重复字符的Java程序,java,arrays,Java,Arrays,好的,首先,对于大多数人来说,正确的缩进有助于理解代码 其次,如果(a[i]==a[i++])不是正确的选择,原因有二 for循环将开始跳过i值,因为您正在使用一元运算符,该运算符将直接作用于操作数 ArrayIndexOutOfBounds:一旦i达到其最大值a.length-1,您的测试条件i++将尝试访问索引a.length处的元素,您可能已经猜到,该元素不存在 您需要的是某种排序算法,而不是实际保存排序的序列。好的,首先,请使用适当的缩进,这有助于理解代码 其次,如果(a[i]==a[i

好的,首先,对于大多数人来说,正确的缩进有助于理解代码

其次,
如果(a[i]==a[i++])
不是正确的选择,原因有二

  • for循环将开始跳过i值,因为您正在使用一元运算符,该运算符将直接作用于操作数
  • ArrayIndexOutOfBounds:一旦i达到其最大值
    a.length-1
    ,您的测试条件
    i++
    将尝试访问索引
    a.length
    处的元素,您可能已经猜到,该元素不存在

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

    好的,首先,请使用适当的缩进,这有助于理解代码

    其次,
    如果(a[i]==a[i++])
    不是正确的选择,原因有二

  • for循环将开始跳过i值,因为您正在使用一元运算符,该运算符将直接作用于操作数
  • ArrayIndexOutOfBounds:一旦i达到其最大值
    a.length-1
    ,您的测试条件
    i++
    将尝试访问索引
    a.length
    处的元素,您可能已经猜到,该元素不存在

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

    这样做可能会对您有所帮助

    Y
    A
    
    publicstaticvoidmain(字符串[]args){
    字符串str=“XXYZZA”;
    char[]a=str.toCharArray();
    HashSet=newhashset();
    加(a[0]);
    for(int i=1;i
    像这样试试,可能会对你有所帮助

    Y
    A
    
    publicstaticvoidmain(字符串[]args){
    字符串str=“XXYZZA”;
    char[]a=str.toCharArray();
    HashSet=newhashset();
    加(a[0]);
    for(int i=1;i
    更改为
    如果(a[i]==a[i+1])
    但是要小心等待发生的OOB异常,
    i++
    ++i
    之间存在差异,这将帮助您找到答案。您可能需要接受此输入
    xyzza
    。它仍然应该是o/p
    Y a
    @Sid yes和no,因为它将在每个循环中增加两次。@ScaryWombat更改它起到了作用。@ScaryWombatd我删除了else语句并将打印移到if子句中,并将条件更改为if(a[I]!=a[I+1])。更改为
    if(a[I]==a[I+1])
    但是要小心等待发生的OOB异常,
    i++
    ++i
    之间存在差异,这将帮助您找到答案。您可能需要接受此输入
    xyzza
    。它仍然应该是o/p
    Y a
    @Sid yes和no,因为它将在每个循环中增加两次。@ScaryWombat更改它起到了作用。@ScaryWombatd我删除了else语句并将打印移到if子句中,并将条件更改为if(a[I]!=a[I+1])。如果使用
    while
    循环,该条件将非常优雅!感谢您的输入。将确保在下一篇文章中使用正确的缩进。如果使用
    while
    循环,该条件将非常优雅!感谢您的输入。将确保在下一篇文章中使用正确的缩进。您为什么要将
    字符
    转换为
    整数?为什么要将
    字符
    转换为
    整数
      public static void main(String[] args) {
        String str = "XXYZZA";
    
        char[] a = str.toCharArray();
        HashSet<Character> set = new HashSet<>();
        set.add( a[0]);
        for (int i = 1; i < a.length; i++)
        {
          if (!set.contains(a[i]) && (i+1 == a.length || a[i] != a[i+1]))
          {
            System.out.println(a[i]);
          }
          set.add(a[i]);
    
        }