2014-02-19 4 views
0

필자는 여기에 자바 실습을 제공하여 학업 성적을 수레 배열에 입력 할 수있는 프로그램을 만들 것입니다.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는 역 참조 할 수 없습니다"그래서 난 그냥 100에 int laki를 초기화 또는 나는 100를 개최 int[] grades = new int[100]을 할 수 있었다 정수 다음에 int laki을 삭제하십시오.

내가 이미 시도했기 때문에 여기에 try and catch 블록이 포함되지 않았으며, 이것이 프로그램의 유일한 부분이므로 적절하게 무엇을 해야할지 잘 모릅니다. 당신이 잘못 인 INT에서 .length를 얻으려고 노력했다

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]; 

:

답변

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 (laki)로 변환 한 다음이를 사용하여 배열을 초기화합니다.

2

성적의 수치를 얻은 후에 벡터를 만들 수 있습니다. 대신 다음을 시도하십시오 :

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()을 수행하면 "incompatible types"오류가 발생하므로 strSize = dataIn.readLine() 및 laki = Integer.parseInt (strSize)를 선택했습니다. – ryndgmn

+0

'laki = dataIn.read();'를 시도해보고 문제가 해결 되었다면 그것을 수락 한 것으로 표시하십시오. – ddz

+0

숫자와 이벤트를 입력했지만 NumberFormatException이 발생했습니다. int laki = 0; 또는 그냥 일반 int 라키; – ryndgmn

1

문제는 기본 유형에서 메소드를 호출하는 반면 아무 것도없는 것입니다. 은 1. 프로그램이 등급의 정확한 그랜드 평균 등을 제공하지 않습니다 : 첫째로 당신은 당신이

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

user3328588 @ 할 수있는 LAKI 변수 다음

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

에 stdin에서 수를 읽을 필요 당신은 float에 평균을 typecasting하지 않습니다. 그래서 그것은 항상 당신에게 둥근 형상을 줄 것입니다.

gradeAverage = totalGrades/laki; 

위의 문은 다음과 같아야합니다

gradeAverage = (float) totalGrades/laki; 
  1. 코드는 최적화되지 않고 배열의 초기화가 올바른 위치에 있지. (int[] grades)

3.Do하지 당신 * 동안 패키지를 가져 오는 동안 여러 클래스를 가져 오기위한 사용 가져 오기.

최적화 된 버전과 올바른 논리와 전체 코드는 아래 첨부 :

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); 
    } 
} 
관련 문제