2017-05-06 60 views
0

如果問題的數量超過10,我被問了一個問號:0這是我的問題:「一個實際的標記不應該超過10個。如果給出的標記無效,那麼實際標記應該設置爲0「。任何人都可以幫助我如何設置它?Java - 如果標記大於10,如何將我的標記設置爲0?

public void setPractical(double practical_mark) 
{ 
    Scanner read = new Scanner(System.in); 
    System.out.println("Enter the practical_mark"); 
    practical_mark =read.nextDouble(); 
    if (practical_mark>10) 
    { 
     practical_mark = 0;                 
    } 
} 
+2

你把'practical_mark'作爲*參數*,然後存儲*鍵盤輸入*在。對我來說完全是無稽之談。它看起來好像你需要另一個變量。 –

+0

你想設置變量作爲參數嗎?如果你想這樣做的java作品按值傳遞,要更改另一個變量有 –

回答

4

你的解決方案是正確的,你必須返回,而不是值那麼結果應該像這樣使用

public double setPractical(double practical_mark){ 
    //... 
    return practical_mark;//return the result, and assign it to another varibale 
} 

double result = setPractical(practical_mark); 

編輯

像@Shashwat提意見,如果你想在你的方法來改變價值,那麼爲什麼你通過它就像在你的方法的參數,它是無用的,而不是你可以使用:

public double setPractical() { 
//-------------------------^------no need to pass your variable here 
    Scanner read = new Scanner(System.in); 
    System.out.println("Enter the practical_mark"); 

    //just create it a initialize it in your method, like this 
    double practical_mark = read.nextDouble(); 

    if (practical_mark > 10) { 
     practical_mark = 0; 
    } 
    return practical_mark; 
} 
+0

如果OP正在使用的輸入鍵盤,然後有什麼用傳遞參數的。 –

+0

你是什麼意思@Shashwat我不明白你的意思? –

+0

檢查OP的代碼。它在方法中有'practical_mark = read.nextDouble();'。這只是改變了參數傳遞的值。 –

1

你的問題是你有兩個值在這裏,如果該值進入該功能,您無需要求用戶到

所以:

public double checkPractical(double practical_mark){ 
    if (practical_mark>10){ 
     practical_mark = 0;                 
    } 
    return practical_mark; 
} 

//可以簡化爲:收益率(practical_mark> 10) ?0:practical_mark;

者和被調用:

public void main(String[] args){ 
    Scanner read = new Scanner(System.in); 
    System.out.println("Enter the practical_mark"); 
    double practical_mark = read.nextDouble(); 
    practical_mark = checkPractical(practical_mark); 
} 
+0

小心使用返回類型,您正在將float轉換爲int。 – Hellzzar

+0

@Hellzzar謝謝^^ – azro