package JavaTest1;
import java.util.Scanner;
public class javatest1000 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
//taking input of the array
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
for (int i = 1; i < n; i++) {
int current = arr[i];
int j = i - 1;
while (arr[j] > current && j >= 0) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = current;
}
//printing output of the sorted array
for (int i = 0; i < n; i++) {
System.out.print(arr[i] + " ");
}
}
}
1条答案
按热度按时间wwwo4jvm1#
首先,java抛出了一个异常,因为java代码中确实存在一个bug。在intellij或java中看到bug的结果(坦率地说)是不可信的。
(我不打算试图找出错误是什么。这是你的家庭作业。如果您想知道如何继续,请阅读如何调试小程序。)
所以如果C版本工作,有两种可能性:
java实现不是C实现的正确翻译。
C版本也有bug,但它们没有作为崩溃来显示。
我的理解是,典型的C实现不执行下标操作的严格边界检查。因此,通常可以引用数组末尾(或开始之前)以外的值,而不会触发错误。未指定执行此操作的代码的行为,但应用程序有可能正常工作。。。在某些平台上,对于某些输入等。。。尽管有bug。
换句话说,“它没有崩溃”并不意味着“它是正确的”。不适用于C++、java或任何编程语言。