2014-07-07 1 views
1

내 Textviews를 업데이트하는 내 코드. 내 textview의 문자열 중 하나를 올바르게 백분율을 표시하도록 업데이트하고 싶습니다. 지금은 totalDouble이 올바른 값을 반환하지만 값을 곱하거나 나눌 수 없습니다. 어떤 도움을 주셔서 감사합니다.Textviews에서 백분율 값을 만들기위한 이중 값

private static Integer intNumberOfMaxGBsAccepted; 

protected void updateTheDailyandTotalUsageInformation(String string) { 

    int daySelected = Integer.parseInt(string); //getting the day as a string 

    //converting the series array to type Number 
    Number dailyNumber = series2Numbers[daySelected-1]; 
    Number totalNumber = series1Numbers[daySelected-1]; 


    //converting the type Number to type Double 
    Double dailyDouble = (Double) dailyNumber; 
    Double totalDouble = (Double) totalNumber; 

    String dailyString = String.format("%.2f", dailyDouble); 
    String totalString = String.format("%.2f", totalDouble); 



    if(intNumberOfMaxGBsAccepted >=1) { 
     System.out.println(totalDouble); 

     // **Inside this if statement I want to do 
     // (totalDouble/intNumberOfMaxGBsAccepted) * 100 
     // to create a percentage** 

    // **I want to create something like this** 
    // Double doublePercent = (totalDouble/(double)intNumberOfMaxGBsAccepted) *100; 
    // String percent = doublePercent+"%"; 
    //usagePlanPercentTextView.setText(percent); 



    } 

    dailyUsageTextView.setText(dailyString); 
    totalUsageTextView.setText(totalString);  
} 

나를 도와 줄 수있는 사람이 있습니까? 내 데이터 형식을 잘못 변환 했습니까? 대신를 사용

+1

'series1Numbers' 및'series2Numbers'는 어떻게 정의됩니까? 그들은 어떤 유형입니까? 왜'int'와'double' 대신에'Integer','Number','Double'을 사용하고 있습니까? 당신은 가치를 곱하거나 나눌 수 없다고 말합니다. 시도 할 때 어떻게됩니까? 컴파일 오류가 발생합니까? 런타임 오류? 그렇다면 어떤 오류가 발생합니까? –

+0

제 2의 David의 질문은 generics에서 제외하고 Integer와 Double을 사용할 이유가 거의 없습니다. 그리고 나는 이전에 Number가 사용 된 것을 본 적이 없다고 생각합니다. –

+0

안녕하세요, David, 코드를 업데이트 한 결과 'totalDouble'을 곱하려고 할 때 NullPointerException 값이 생깁니다. – MadsterMaddness

답변

2

시도 :

//converting the type Number to type double 
double dailyDouble = dailyNumber.doubleValue(); 
double totalDouble = totalNumber.doubleValue(); 

는 이제 어려움없이 이중 값을 조작 할 수 있어야한다.

doubleValue에 대한 호출에서 널 포인터 예외가 발생하면 배열의 값이 널임을 알 수 있습니다.

double[] series2Numbers = new double[ {arraysize} ]; 

개체 배열 대신 값 배열을 사용하면 항상 값을 가지며 널 포인터는 사용할 수 없습니다.

+0

두 줄의 코드에서 널 포인터 예외가 발생합니다. 그게 무슨 뜻 이죠? 무엇을 바꾸어야합니까? – MadsterMaddness

+0

정말 고마워요 !!! 모든 것을 이중으로 변경하고 seriesArray를 Integer에서 이중으로 초기화하여 작동했습니다. !!!! 감사합니다 :) 나는 당신에게 최대 득표를하기에 충분한 명성이 있었으면 좋겠다. – MadsterMaddness

1

숫자 대신 이중 값을 사용하여 배열을 훨씬 쉽게 업데이트 할 수있었습니다.

//converting the type Number to type double 
    double dailyDouble = dailyNumber.doubleValue(); 
    double totalDouble = totalNumber.doubleValue(); 


    double[] series2Numbers = new double[ {arraysize} ];