2016-09-16 102 views
1

初學者編碼器在這裏。我試圖區分何時用戶輸入一個值並且沒有輸入值。區分「空白輸入」和零值作爲實際輸入

當用戶沒有輸入指定值時,整數變量= 0。

但是,如果用戶輸入0作爲他們的變量,我需要它是不同的。

if(exam1Input == 0){ 
    exam1Per = 0;} 
if(exam2Input == 0){ 
    exam2Per = 0;} 
if(finalExamInput == 0){ 
    finalExamPer = 0;} 
if(labsInput == 0){ 
    labsPer = 0;} 
if(projectsInput == 0){ 
    projectsPer = 0;} 
if(quizzesInput == 0){ 
    quizzesPer = 0;} 
if(attendanceInput == 0){ 
    attendancePer = 0;} 

我這樣做是多分支if語句的百分比等級權重值變相零如果輸入的是零(即沒有輸入的話)。

但是,我遇到了一個問題,當用戶輸入「0」作爲他們的實際等級。我不能讓百分比權重爲0,我仍然需要它是一定的等級百分比。

例如如果他們的測試平均值爲0,我仍然需要根據等級0計算他們的百分比。

那麼,我怎麼能更具體並能夠區分缺少的輸入和實際輸入?

我希望零作爲實際成績而不是丟失的輸入。

+0

你用什麼代碼檢索'int'? – 4castle

+1

爲什麼不使用-1作爲默認值? – Shadov

+0

太糟糕了!你提出的代碼非常糟糕!它的圈複雜性令人難以置信,沒有理由!請改變你的代碼的邏輯。 – acornagl

回答

1

一個簡單的解決方案是使用一個不同的默認值,該默認值將是來自用戶的無效輸入。例如:

static final int NO_INPUT = -1; 

int exam1Input = NO_INPUT; 

/**Prompt the user for input somewhere around here*/ 

if(exam1Input == 0) ... 

現在,如果用戶明確地將其設置爲0,則exam1Input將僅爲0,否則爲-1。

1

或者,使用OptionalInt而不是int。這種情況是他們的目的。

OptionalInt input = OptionalInt.empty(); 
// input = Optional.of(someValue); if set 
If (input.isPresent()) { 
    int i = input.getAsInt(); 
    // use the value 
}