0

はい、これは宿題です。簡単に言えば、私の教授は言葉遣いが得意ではないので、

そのようなテキストファイルが与えられます

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 番目の行は配列 2 になります。各行の最初の int は配列のサイズになります。

int a[] = new int[11]
int b[] = new int[8]

私の最初の問題は、これをプログラムに読み込むことです。引数として run を想定していますが、私の問題は、各行を解読して配列をロードすることです。

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++;
    }        
  }
}
4

2 に答える 2

1

これを試してください:一度に1行ずつ読み、スペースを使用して行を分割して行内の数値の配列を取得し、すべてのエントリをリストに追加します。最後にリストから配列を取得します。

   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[]{});
于 2012-11-28T19:13:32.067 に答える