[英]Merging Two Arrays Given In a Text File into a Third Array
是的,這是家庭作業。 簡而言之,因為我的教授的措辭不是最好的,
我得到了這樣的文本文件
11 -5 -4 -3 -2 -1 6 7 8 9 10 11
8 -33 -22 -11 44 55 66 77 88
給出為SortedArrays.txt
第一行將是數組1,第二行將是數組2,每行的第一int將是數組的大小,因此:
int a[] = new int[11]
int b[] = new int[8]
我的第一個問題是將其讀入程序,我假設將其作為參數運行,但是我的問題是在每一行之間解密並加載數組。
我相信我有一個比較a和b元素並將其加載到c中的好方法,但是有人可以看一下嗎?
再次感謝您訪問本網站,我到處搜索並看到了該程序,但是元素已經從文本文件中給出或未給出。
// ************************************************************
// MergeArray.java
//
// Written by: Brandon Pham
//
//
//
//
// Homework 6
// ************************************************************
import java.io.*;
import java.util.*;
public class MergeArray {
String arrayfile = "SortedArrays.txt";
MergeArray(String arrayfile){
try {
Scanner arrayload = new Scanner(File(arrayfile));
}
catch (FileNotFoundException e) {
System.out.printf("File %s not found, exiting!",
arrayfile);
System.exit(0);
}
int[] a = new int[arrayload.nextint()];
int[] b = new int[arrayload.nextLine()];
int[] c = new int[a.length+b.length];
}
public static void merge(int[]a, int[]b, int[]c) {
int i=0,j=0,k=0;
int alength = a.length;
int blength = b.length;
while (k<c.length){
if (a[i] < b[j]){
c[k] = a[i];
k++;
i++;
}
if (a[i] == b[j]){
c[k]=a[i];
c[k++]=b[j];
i++;
j++;
if (i+1>a.length){
c[k]=b[j];
k++;
j++;
}
if (j+1>b.length){
c[k]=a[i];
k++;
i++;
}
else{
c[k] = b[j];
k++;
j++;
}
}
}
嘗試以下操作:一次讀取一行,使用空格分割該行以獲取該行中的數字數組,並將所有條目添加到列表中,因為它具有開放式結尾。 最后從列表中獲取數組。
String line;
List<String> list = new ArrayList<String>();
while(arrayload.hasNextLine()){
line = arrayload.nextLine();
String[] nums = line.split(" ");
list.addAll(Arrays.asList(nums));
}
String[] finalNums = list.toArray(new String[]{});
您的文件閱讀很好。 但是,輸出的排序可能會更簡單:
這是一些快速代碼:
int[] result = new int[array1.length+array2.length]
int cursor1 = 0;
int cursor2 = 0;
for(int = 0; i < result.length; i++) {
if(cursor1 > array1.length-1){
result[i] = array2[cursor2++];
} else if(cursor2 > array2.length-1){
result[i] = array1[cursor1++];
} else if(array1[cursor1] > array2[cursor2]){
result[i] = array1[cursor1];
cursor1++;
} else {
result[i] = array2[cursor2];
cursor2++;
}
}
我只是在瀏覽器中編寫了代碼,所以我當然不保證使用正確的語法;)
希望對您有所幫助,請再次詢問更多詳細信息,並隨時發布您的進度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.