2012-12-16 3 views
-2

저는 Java에 익숙하지 않아 현재 학기 (CS 전공)의 최종 프로젝트를 진행하고 있으며 "변수가 초기화되지 않았을 수 있습니다"오류가 발생합니다. 사이트에서 다른 픽스를 시도했지만, 할 때마다 내가 만든 루프에서 정의 된 것보다는 초기화 된 변수를 사용합니다.초기화 코드 유실

public static void main(String[] args) { 
    double priceperpound  = 2; // price per pound of coffee 
    int numberofbags   = 2; // number of pounds of coffee 
    double bagweightinpounds = 1; // weight of the bag in punds 
// double pricebeforetaxes = 8; // total before taxes 
// double totalpricewithtaxes = 0; // total price 
    double taxrate    = .065; // whats the tax? 
    double TotalWeight   = 0; // total weight of purchase 
// double discountprice  = 0; // discounted price 
// double discount   = .9; // if you qualify the price before taxes will be  multiplied by this 
    int row; 
    int col; 

    PriceCalculator calculations = new PriceCalculator(priceperpound, numberofbags, 
      bagweightinpounds, taxrate); 

    for (bagweightinpounds = 1; bagweightinpounds <= 5; bagweightinpounds = bagweightinpounds + 1) { 

     for (numberofbags = 2; numberofbags <= 1024; numberofbags = numberofbags * 2) 
     { 
      System.out.printf("%f", calculations.getBasePrice()); 
     } 
    } 
    Scanner input = new Scanner(System.in); 
} 
+2

자바가 C ​​또는 파스칼이 아닙니다. 메소드의 시작 부분에서 변수를 모두 선언하는 대신 필요할 때만 변수를 선언하고 동시에 초기화하십시오. 그리고 가능한 한 짧은 방법을 만들어보십시오. –

+0

이 전체 코드입니까? 왜냐하면 결국 a가 없어 졌기 때문입니다. – fonZ

+0

중단 점을 넣고 오류가 정확히 어디서 발생하는지 확인할 수 있습니까? Java 컴파일러 보증인이 0.0, 0.0d 또는 0.0D로 선언되지 않은 'double'을 컴파일할지 여부는 확실하지 않습니다. – bonCodigo

답변

0

당신은 변수를 선언하고 (예를 들어) 그것을 디폴트 값을 제공하지 않는 경우 :

int row; 

를 식에서 값을 사용하려고하면 :

row = row + 1; 

그런 다음을 컴파일러가 오류를 발생시킵니다. 오류가있는 행을 찾고 변수를 분석하십시오.

업데이트 : 루프에서 초기화 된 유일한 변수는 첫 번째 문에서 for 루프입니다 (v12. for(int i = 0; i < 5; i++)i 변수를 초기화 함). 이 같은

+2

예외를 throw하지 않습니다. 사실 그것은 컴파일에 실패합니다. –

+0

그러나 루프의 시작 부분에서 값이 초기화되지 않았습니까? 루프가 코드를 찾을 수있는 유일한 곳입니다. – user1908047

+0

@RohitJain 맞습니다. 수정 ... – SJuan76

0

그 ......... 자바에서

  • 우리는 클래스 범위 (인스턴스 변수)의 자동 할당 된 기본 값으로 변수를 선언합니다.

  • 그러나 메소드 범위 (로컬 변수)에서 변수를 선언 할 때는 사용 전에 초기화해야합니다. 귀하의 경우 그래서

이처럼 수행

INT 행 = 0;

int col = 0;

내 코드 포맷을 기쁘게합니다. 휴대 전화를 사용하고 있습니다 ........

관련 문제