2014-02-19 59 views
0

我有一個Java練習,在這裏你將創建一個程序,允許你將你的學習成績輸入到一個浮點數組中。如何在Java中分配數組中元素的數量?

在節目開始時,應用程序應該提示用戶輸入你打算進入等級的總數。進入成績後,你會計算出這些成績的平均值。 下面的代碼是我到目前爲止編碼的。

import java.io.*; 

public class Proj4exe1 
    { 
    public static void main(String args[]) throws IOException 
    { 
     BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in)); 
     String strSize, strGrades; 
     int laki = 100; 
     int totalGrades = 0; 
     float gradeAverage = 0; 
     float[] grades = new float[laki]; 

     System.out.print("How many grades will you enter?"); 
     strSize = dataIn.readLine(); 
     laki = Integer.parseInt(strSize); 


     for(int i=0; i<laki; i++) 
    { 
     System.out.print("Please enter grade # " + (i+1) + ": "); 
     strGrades = dataIn.readLine(); 
     grades[i] = Float.parseFloat(strGrades); 
     totalGrades += grades[i]; 
    }   
     gradeAverage = totalGrades/laki; 

     System.out.println("Your grades average is " + gradeAverage); 
    } 
} 

我試圖int[] grades = new int[laki.length]作爲等級的輸入數字的程序,但這會導致編譯錯誤「詮釋無法提領」所以我只是初始化int laki 100或我可以做int[] grades = new int[100]持有100整數然後刪除int laki

我這裏沒有包括try和catch塊,因爲我已經做了一個,這是我仍然不知道怎樣適當地做方案的一部分。

回答

1
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class Proj4exe1 
    { 
    public static void main(String args[]) throws IOException 
    { 
     BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in)); 
     String strSize, strGrades; 
     int laki = 100; 
     int totalGrades = 0; 
     float gradeAverage = 0; 
     float[] grades = new float[laki]; 

     System.out.print("How many grades will you enter?"); 
     strSize = dataIn.readLine(); 
     laki = Integer.parseInt(strSize); 
     grades = new float[laki]; // reassign <----------------------- 

     for(int i=0; i<laki; i++) 
    { 
     System.out.print("Please enter grade # " + (i+1) + ": "); 
     strGrades = dataIn.readLine(); 
     grades[i] = Float.parseFloat(strGrades); 
     totalGrades += grades[i]; 
    }   
     gradeAverage = totalGrades/laki; 

     System.out.println("Your grades average is " + gradeAverage); 
    } 
} 
+0

爲什麼reasign時,你可以使用後期分配創建它的參考? – ddz

+0

是的,以後創建更好。但是,如果我現在改變我的答案,它可能看起來像釣魚upvotes。 –

+0

我沒有看到這樣的事情。我主張認爲你只是在改善你的答案。無論如何.. – ddz

5

你只需要重新組織你的代碼位:

int totalGrades = 0; 
float gradeAverage = 0; 

System.out.print("How many grades will you enter?"); 
strSize = dataIn.readLine(); 
laki = Integer.parseInt(strSize); 
float[] grades = new float[laki]; 

你正試圖從一個int這是不對的獲得。長度。相反,這樣做是你的輸入轉換爲int(拉基),然後使用該初始化數組

2

可以得到等級的NUMER後創建的載體。試試這個代替:

int laki; 

    System.out.print("How many grades will you enter?"); 
    strSize = dataIn.readLine(); 
    laki = Integer.parseInt(strSize); 

    float[] grades = new float[laki]; 

順便說一句,爲什麼你讀作爲一個字符串的等級數,然後將其轉換爲int? 閱讀它像int代替。

+0

非常感謝你的作品!但是做laki = dataIn.readLine()會導致錯誤「不兼容的類型」,所以我選擇了strSize = dataIn.readLine()和laki = Integer.parseInt(strSize)。 – ryndgmn

+0

你應該嘗試'laki = dataIn.read();'如果答案解決了你的問題,把它標記爲已接受。 – ddz

+0

這導致了一個NumberFormatException,雖然我輸入了一個數字,事件中我沒有int laki = 0;或只是簡單的拉基; – ryndgmn

1

的問題是,你調用一個原始類型的方法,而它沒有任何。首先,你必須從標準到拉基變量

int laki = Integer.parseInt(dataIn.readline()); 

然後讀出數字,你可以做

float[] grades = new float[laki]; 
1

@ user3328588: 1.你的程序將不給成績的正確的總平均爲你不會將平均值轉換爲浮點數。所以它總是會給你一個圓形的數字。

gradeAverage = totalGrades/laki; 

上述說法應該是這樣的:

​​
  1. 您的代碼沒有經過優化和數組的初始化是不是在正確的位置。 (int[] grades)

3.你不是*而導入包的同時使用導入來導入多個類。

整個代碼優化版本和正確的邏輯連接如下:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class Proj4exe1 { 
    public static void main(String args[]) throws IOException { 
     BufferedReader dataIn = new BufferedReader(new InputStreamReader(
       System.in)); 

     int totalGrades = 0; 
     float gradeAverage = 0; 

     System.out.print("How many grades will you enter?"); 
     int laki = Integer.parseInt(dataIn.readLine()); 
     float[] grades = new float[laki]; // reassign <----------------------- 

     int count = 0; 
     while (laki > 0) { 
      System.out.print("Please enter grade # " + (count + 1) + ": "); 
      grades[count] = Float.parseFloat(dataIn.readLine()); 
      totalGrades += grades[count]; 
      laki--; 
      count++; 
     } 
     gradeAverage = (float) totalGrades/count; 

     System.out.println("Your grades average is " + gradeAverage); 
    } 
} 
相關問題