簡體   English   中英

Java掃描儀/陣列金字塔

[英]Java Scanner/Array Pyramid

所以我正在努力使附加值金字塔化。 例如 第1行具有(5),第2行具有(6,7)第3行具有(12,10,7)。 目標是將第一行的最大值與下一行的最高連接子級值相加。 因此,在這種情況下,您將添加5 + 7 + 10,結果為22。之所以不能在第3行中使用12,是因為您必須使用上述數字的子代(每個父代都有2個孩子)。

我的方法是使用Scanner逐行將int值加載到數組中,並以某種方式索引上一行的最高子值的位置,以將其添加到運行總計中。 這是我到目前為止的代碼...

//在數據文件中...

5

6 7

12 10 7

//就這樣。

    public static void main(String[] args) {
    Scanner scanner = null;
    try {
        scanner = new Scanner(new File("/users/joe/desktop/data.txt"));
    } catch (FileNotFoundException e) {
        System.out.println("File not found.");
        e.printStackTrace();

    } //reads the file

    int[] a = new int[100]; //establishes new array with a max size of 100
    int i = 0; //placeholder for array position
    int result = 0;
    int total = 0;

    while(scanner.hasNextLine()){ //loops through line
        a[i++] = scanner.nextInt(); //adds int to array
        if(i == 0){ //does this belong here?
            result = a[0];
        }
        else{
            if(a[i-1] >= a[i+1]){
                result = a[i-1];
            }
            else if(a[i-1] <= a[i+1]){
                result = a[i+1];
            }
        }
    }
    total =  total + result;
    scanner.close();

    System.out.print(Arrays.toString(a));
    System.out.println("\n" + total);


    }
    }

當前,它將打印出:[5,6,7,12,10,7,0,0,0,0,0,...最多100個位置]

5

如何使掃描儀讀取一行,將其加載到一個數組中,對其進行循環,並保存下一行數組中的最高子級值?

當我執行該代碼時,在讀取所有數字后會得到NoSuchElementException。 發生這種情況是因為您始終在檢查文件的下一行,但要讀下一個整數。

代碼中存在太多邏輯缺陷,因此很難一一列舉。 您可以從事以下工作:

您只需要在循環外添加合計+結果一次。 您應該將其移入循環,以便正確計算總數

您計算結果不正確。 至少,您應該有一個變量,該變量指示最高數字在最后一行的位置。 您還正在將i -1與i + 1進行比較...當您下到最后一行時,這將不起作用,因為您將比較i兩側的項目,而不是i以下的項目。

我建議將變量讀入三角形2D數組。 您可以通過為每行創建另一個掃描儀來實現。 將每一行讀入新的掃描儀; 並輪詢nextInt()。 然后,您可以比較arr [row] [pos]和arr [row] [pos + 1],它們將是arr [row-1] [pos]的子代。

一旦您可以將文件讀取到2D數組中並從數組中打印出int的外觀就像文件內容一樣,並且如果仍然遇到問題,請回來,我們可以為您提供更多幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM