在java中使用气泡排序以升序或降序显示元素
我在显示字母时遇到了问题,不管它们是否按升序排列,逻辑似乎是正确的,假设数组按升序排列,但打印时总是得到错误的结果,我尝试了其他方法,但总是得到错误的结果在java中使用气泡排序以升序或降序显示元素,java,bubble-sort,Java,Bubble Sort,我在显示字母时遇到了问题,不管它们是否按升序排列,逻辑似乎是正确的,假设数组按升序排列,但打印时总是得到错误的结果,我尝试了其他方法,但总是得到错误的结果 public class Main { public static void main(String[] args) { System.out.print( "#Enter text : " ); String text = BIO.getString(); boolean i
public class Main
{
public static void main(String[] args)
{
System.out.print( "#Enter text : " );
String text = BIO.getString();
boolean inorder = false;
while ( ! text.equals( "END" ) )
{
inorder = true;
// Convert the above string to a char array.
char[] arr = text.toCharArray();
for (int i=0; i<arr.length-1; i++)
{ //Check pair
if ( arr[i] > arr[i + 1] ) {
inorder = false;
break;
}
}
if ( inorder ) {
System.out.printf( text + " is in ascending order\n" );
}
else {
System.out.printf( text + " is not in ascending order\n" );
}
System.out.print( "#Enter text : " );
text = BIO.getString();
}
}
}
公共类主
{
公共静态void main(字符串[]args)
{
系统输出打印(“#输入文本:”);
String text=BIO.getString();
布尔顺序=假;
而(!text.equals(“END”))
{
顺序=真;
//将上述字符串转换为字符数组。
char[]arr=text.toCharArray();
对于(int i=0;i arr[i+1]){
顺序=假;
打破
}
}
如果(按顺序){
System.out.printf(text+“按升序排列\n”);
}
否则{
System.out.printf(text+“不是升序\n”);
}
系统输出打印(“#输入文本:”);
text=BIO.getString();
}
}
}
上述代码工作正常,可能是由于BIO.getString()返回的值有问题。在标题中,你提到了冒泡排序算法,代码在哪里?问题可能就在那里
编辑:
既然您已经提到了大写/小写单词的问题,我建议您在比较之前将输入文本转换为小写,如下所示:
char[] arr = text.toLowerCase().toCharArray();
这样,文本是大写还是小写就无关紧要了。您得到了什么输出?你期待什么?当你在调试器中运行代码时,你学到了什么?你能提供一个例子说明这段代码是错误的吗?请在这样的问题中添加“家庭作业”标记,这与冒泡排序有什么关系?代码很好,尽管你只需要做更多的步骤,你可以通过简单地用if(text.charAt(i)做检查部分来限制自己>text.charAt(i+1))问题在于getString()方法返回的值。您仍然在java中使用printf thingy。我确认上述代码工作正常,即使是非英语字符。此外,上面的代码显示了它检查的字符串,因此只要查看程序输出就可以很容易地检查它是否说了实话,除非BIO.getString()函数做了一些不好的事情,例如在字符串中嵌入了一些不可打印的字符,如零。问题是当我输入单词时,例如“knotty”将给我结果“按升序排列”,但当在单词“knoty”的开头和结尾加上大写字母时,它会给我结果“不按升序排列”请帮忙,thanks@user761980我编辑了我的答案,请检查它是否适合你。您应该从一开始就提到您在使用大写/小写时遇到了问题。