java - 无法按升序对数组进行排序
问题描述
我刚刚开始编程...我正在尝试按升序对数组进行排序..但没有得到想要的结果,请指出我做错了什么..
public static void main(String[] args) {
int count, temp;
// User inputs the array size
Scanner scan = new Scanner(System.in);
System.out.print("Enter number of elements you want in the array: ");
count = scan.nextInt();
int num[] = new int[count];
System.out.println("Enter array elements:");
for (int i = 0; i < count; i++) {
num[i] = scan.nextInt();
}
scan.close();
{
int i = 0;
while (i <= count) {
for (int j = i + 1; j < count; j++) {
if (num[i] > num[j]) {
temp = num[i];
num[i] = num[j];
num[j] = temp;
i++;
}
}
}
}
System.out.print("Array Elements in Ascending Order: ");
for (int i = 0; i < count - 1; i++) {
System.out.print(num[i] + ", ");
}
System.out.print(num[count - 1]);
}
解决方案
你应该在 for 循环之外增加 i 或者你可以摆脱 while 循环并使用 for 循环,你可以找到下面的代码:
import java.util.Scanner;
public class Ascending _Order
{
public static void main(String[] args)
{
int n, temp;
Scanner s = new Scanner(System.in);
System.out.print("Enter no. of elements you want in array:");
n = s.nextInt();
int a[] = new int[n];
System.out.println("Enter all the elements:");
for (int i = 0; i < n; i++)
{
a[i] = s.nextInt();
}
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
System.out.print("Ascending Order:");
for (int i = 0; i < n - 1; i++)
{
System.out.print(a[i] + ",");
}
System.out.print(a[n - 1]);
}
}
输出:
输入编号。你想要在数组中的元素:5
输入所有元素:4 3 2 6 1
升序:1,2,3,4,6
或者您可以使用方法 sort :
import java.util.Scanner;
import java.util.Arrays;
public class Ascending_Order {
public static void main(String[] args) {
int n, temp;
Scanner s = new Scanner(System.in);
System.out.print("Enter no. of elements you want in array:");
n = s.nextInt();
int a[] = new int[n];
System.out.println("Enter all the elements:");
for (int i = 0; i < n; i++) {
a[i] = s.nextInt();
}
Arrays.sort(a);
System.out.print("Ascending Order:");
for (int i = 0; i < n - 1; i++) {
System.out.print(a[i] + ",");
}
System.out.print(a[n - 1]);
}
}
输出:
输入编号。你想要在数组中的元素:5
输入所有元素:4 3 2 6 1
升序:1,2,3,4,6
推荐阅读
- ngx-admin - Nebular 以编程方式关闭带有表单的弹出框
- optimization - 如何为特定的优化问题建模?
- sharepoint - 迁移开箱即用 SharePoint 2010 --> SharePoint 2016 网站的最佳方式
- angular - Ionic 3, angular 5 - webapp 的缓存问题
- javascript - 如何关闭 SignalR 中的客户端 JavaScript“集线器”连接?
- javascript - 尝试进行更清晰的异步 JSON 翻译调用
- javascript - 开玩笑的反应 onSubmit 不包括方法
- java - Java - 在导航到具有相同 html 模板的不同页面时断言类包含文本
- php - 使用 vsmoraes/laravel-pdf 包在 laravel 中返回带有变量的视图
- latex - 未定义的控制序列 \chapter