打印字符串中第一个非重复字符的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++])
不是正确的选择,原因有二
a.length-1
,您的测试条件i++
将尝试访问索引a.length
处的元素,您可能已经猜到,该元素不存在您需要的是某种排序算法,而不是实际保存排序的序列。好的,首先,请使用适当的缩进,这有助于理解代码 其次,
如果(a[i]==a[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/pY 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/pY 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]);
}