我是 Java 初学者,需要一些帮助来解决这个问题。首先让我向您展示我的实际程序。
import java.util.Scanner;
import java.util.Arrays;
public class IntArraySort {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Array-Size: ");
int num = in.nextInt();
int[] arr = new int[num];
for(int i = 0; i < arr.length; i++){
System.out.printf("%2d-tes element: ", i+1);
arr[i] = in.nextInt();
}
System.out.printf("%nOutput before sort: ");
System.out.println(Arrays.toString(arr));
int minIndex, tmp;
int n = arr.length;
for(int i = 00; i < n - 1; i++) {
minIndex = i;
for(int j = i + 1; j < n; j++)
if (arr[j] < arr[minIndex])
minIndex = j;
if (minIndex != i) {
tmp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = tmp;
}
System.out.printf("%n%2d-ter Run: ", i+1);
System.out.println(Arrays.toString(arr));
}
}
}
这是一个程序,当您通过键盘输入扫描数组的大小和数字时,对 Int 数组从小到大进行排序。但我想从 .dat 文件扫描我的数组。我将其命名为 sort.dat,它看起来像这样:
0
20
12
8
16
6
10
14
2
18
4
21
4
-1
-3
我需要在 Java 程序中进行哪些更改才能在 Unix 上通过输入重定向 (IntArraySort.java < sort.dat) 扫描 sort.dat 文件?
最佳答案
您不需要更改很多东西,只需读取大小为 args.length 的输入数据并将它们存储在整数数组中即可。
例如:
ArrayList<Integer> inpudData = new ArrayList<Integer>();
if (args.length < 1) {
System.out.println("Proper Usage is: java IntArraySort < sort.dat");
System.exit(0);
} else {
for (int i = 0; i < args.length; i++)
inpudData.add(Integer.parseInt(args[i]));
}
现在你只需调用 java IntArraySort < sort.dat ,将 sort.dat 文件的内容重定向到你正在调用的 java 程序,而不是让用户手动键入要一一排序的数字按 [ENTER]。
关于java - 如何通过 Unix 输入重定向将文件作为数组输入到我的 java 程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21170437/