2012-01-24 8 views
5

मैंने कुछ अलग-अलग तरीकों की कोशिश की है, जैसे प्रिंट (बूलियन आइस लाइपियर) और कुछ अन्य, लेकिन मैं यह नहीं समझ सकता कि इसे कैसे काम पर लाया जाए। यह हमेशा कहता है कि मेरे पास एक लापता वर्ग है (बूलियन आदिम है, क्या इसकी आवश्यकता है?) वैसे भी, यदि आइलीपियर है- और कथन गलत हैं, तो मैं उन लोगों के बारे में चिंतित नहीं हूं .. मुझे बस प्रिंट करने का तरीका पता होना चाहिए बुलियन के मूल्य से बाहर; सही दिशा में किसी भी मदद/बिंदु बहुत सराहना कर रहा है =]मैं इस बूलियन के मूल्य को कैसे मुद्रित करूं? (जावा)

import java.util.Scanner; 

public class booleanfun { 
    boolean isLeapYear; 

    public static void main(String[] args) 
    { 
     System.out.println("Enter a year to determine if it is a leap year or not: "); 
     Scanner kboard = new Scanner(System.in); 
     int year = kboard.nextInt(); 
    } 
public boolean isLeapYear(int year) 
    { 
    if (year % 4 != 0) 
     isLeapYear = false; 

    else if ((year % 4 == 0) && (year % 100 == 0)) 
     isLeapYear = false; 

    else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0)) 
     isLeapYear = true; 

    else 
     isLeapYear = false; 

System.out.println(isLeapYear); 

    return isLeapYear; 
    } 
} 
+1

"System.out.println (बूलियन isLeapYear) को हटाएं;" इस काम के ऊपर की रेखा। –

+0

क्या यह "बूलियन isLeapYear" नहीं होगा? – cutrightjm

+0

@ ओली चेहरल्सवर्थ वह कक्षा के क्षेत्र के रूप में है। वह शायद भ्रमित हो रहा है क्योंकि स्थैतिक मुख्य विधि गैर स्थैतिक isLeapYear() विधि को कॉल नहीं कर सकती है। – bdares

उत्तर

6
System.out.println(isLeapYear); 

ठीक काम करना चाहिए।

संयोग से,

else if ((year % 4 == 0) && (year % 100 == 0)) 
    isLeapYear = false; 

else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0)) 
    isLeapYear = true; 

में year % 400 हिस्सा पहुँचा जा कभी नहीं होगा क्योंकि अगर (year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0) सत्य है, तभी (year % 4 == 0) && (year % 100 == 0) सफल रहा है चाहिए।

हो सकता है कि उन दो की स्थिति स्वैप या उन्हें refactor:

सभी की
else if ((year % 4 == 0) && (year % 100 == 0)) 
    isLeapYear = (year % 400 == 0); 
1

पहले, अपने चर "isLeapYear" विधि के रूप में एक ही नाम है। यह सिर्फ बुरा अभ्यास है।

दूसरा, आप एक चर के रूप में "isLeapYear" घोषित नहीं कर रहे हैं। जावा दृढ़ता से टाइप किया गया है, इसलिए आपको अपनी विधि की शुरुआत में boolean isLeapYear; की आवश्यकता है।

यह कॉल: System.out.println(boolean isLeapYear); बस गलत है। विधि कॉल में कोई घोषणा नहीं है।

एक बार जब आप isLeapYear घोषणा की है एक बूलियन चर होने के लिए आपको कॉल कर सकते हैं System.out.println(isLeapYear);

अद्यतन: मैं सिर्फ देखा कि यह एक क्षेत्र के रूप में घोषित किया है। तो बस लाइन System.out.println(boolean isLeapYear); हटाएं आपको समझना चाहिए कि आप मुख्य() विधि से लीपियर को कॉल नहीं कर सकते हैं। आप किसी स्थिर विधि से एक स्थिर विधि से एक गैर स्थैतिक विधि को कॉल नहीं कर सकते हैं। आप इसे कॉल करना चाहते हैं, तो आप को जोड़ने के लिए

booleanfun myBoolFun = new booleanfun(); 
System.out.println(myBoolFun.isLeapYear); 

मैं वास्तव में आप ग्रहण का उपयोग करने का सुझाव की जरूरत है, तो यह आपको मक्खी और उसके बहुत आसान कि जिस तरह से जानने के लिए पर इस तरह के संकलन त्रुटियों के बारे में बताएगी।

0
public boolean isLeapYear(int year) 
{ 
    if (year % 4 != 0){ 
     isLeapYear = false; 
     System.out.println("false"); 
    } 
    else if ((year % 4 == 0) && (year % 100 == 0)){ 
     isLeapYear = false; 
     System.out.println("false"); 
    } 
    else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0)){ 
     isLeapYear = true; 
     System.out.println("true"); 
    } 
    else{ 
     isLeapYear = false; 
     System.out.println("false"); 
    } 
    return isLeapYear; 
} 
+0

नीचे मतदाताओं के लिए, क्या आप कृपया मुझे बता सकते हैं कि यह बेकार क्यों है? –

+0

@ekaj क्या आप अंतिम लाइन दोस्त देखते थे? यह कहता है कि 'वापसी isLeapYear' –

+0

है और यह तीसरे स्थान पर एक अलग मूल्य ('isLeapYear' से) प्रिंट भी कर रहा है। क्यों न सिर्फ 'System.out.println (isLeapYear);' लौटने से पहले? –

10

कई समस्याएं हैं।

एक शैली का है; हमेशा कक्षा के नामों को पूंजीकृत करें। यह एक सार्वभौमिक रूप से मनाया गया जावा सम्मेलन है। ऐसा करने में विफल अन्य प्रोग्रामर को भ्रमित करता है।

दूसरे, लाइन

System.out.println(boolean isLeapYear); 

एक सिंटैक्स त्रुटि है। इसे मिटाओ।

तीसरा।

आप कभी भी अपने मुख्य दिनचर्या से फ़ंक्शन को कॉल नहीं करते हैं। यही कारण है कि आप इनपुट में कोई जवाब कभी नहीं देखते हैं।

+0

अन्य समस्याएं भी हैं। – ncmathsadist

+2

@ekaj उसने आपको बिल्कुल बताया कि इसे कैसे काम करना है। उन्होंने आपको सुझाव भी दिए जो आपको लंबे समय तक मदद करेंगे। वह जो कह रहा है उसे जोड़ने के लिए, आपको या तो अपने बूलियन या विधि का नाम बदलना चाहिए क्योंकि उनके पास समान नाम है। ये सहायक आलोचनाएं हैं, आपको नीचे रखने का कोई इरादा नहीं है। – StartingGroovy

+0

धन्यवाद @StartingGroovy – ncmathsadist

4

आपको अपने बूलियन वैरिएबल के सामने 'बूलियन' को हटा देना चाहिए।

इसे इस तरह कार्य करें:

boolean isLeapYear = true; 
System.out.println(isLeapYear); 

या

boolean isLeapYear = true; 
System.out.println(isLeapYear?"yes":"no"); 

दूसरी बात IST टोपी आप बिल्कुल विधि कॉल करने के लिए नहीं लगता है! विधि और चर दोनों स्थिर नहीं हैं, इस प्रकार, आपको पहले अपनी कक्षा का एक उदाहरण बनाना होगा। या आप केवल स्थिर बनाते हैं और अपनी विधि को सीधे अपने माईम विधि से कॉल करते हैं।

इस प्रकार कोड में कुछ गलतियां हैं। हो सकता है कि आप एक और अधिक सरल उदाहरण के साथ शुरू हो जाएं और जब तक आप चाहें तब तक इसे फिर से काम न करें।

उदाहरण:

import java.util.Scanner; 

public class booleanfun { 
    static boolean isLeapYear; 

    public static void main(String[] args) 
    { 
     System.out.println("Enter a year to determine if it is a leap year or not: "); 
     Scanner kboard = new Scanner(System.in); 
     int year = kboard.nextInt(); 
     isLeapYear(year); 
    } 
    public static boolean isLeapYear(int year) { 
     if (year % 4 != 0) 
     isLeapYear = false; 

     else if ((year % 4 == 0) && (year % 100 == 0)) 

     isLeapYear = false; 

     else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0)) 
      isLeapYear = true; 

     else 
      isLeapYear = false; 

     System.out.println(isLeapYear); 

     return isLeapYear; 
    } 
} 
2

तरीके आपकी समस्या का समाधान करने के लिए की एक जोड़ी, हालांकि यह शायद सबसे सरल है:

आपका main विधि स्थिर है, इसलिए यह उदाहरण के लिए पहुँच नहीं है । के सदस्यों (isLeapYear क्षेत्र और isLeapYear विधि एक दृष्टिकोण को सुधारने के लिए यह दोनों क्षेत्र और विधि स्थिर रूप में अच्छी तरह बनाने के लिए है:

static boolean isLeapYear; 
/* (snip) */ 
public static boolean isLeapYear(int year) 
{ 
    /* (snip) */ 
} 

आखिरकार, आप वास्तव में अपने isLeapYear विधि को कॉल नहीं कर रहे हैं (यही कारण है कि आप कोई परिणाम नहीं देख रहे हैं)। int year = kboard.nextInt(); के बाद इस लाइन जोड़ें:

isLeapYear(year);

कि एक शुरुआत होनी चाहिए। कुछ अन्य सर्वोत्तम प्रथाएं हैं जिनका आप अनुसरण कर सकते हैं लेकिन अभी आपके कोड को काम करने पर ध्यान केंद्रित करें; आप बाद में refactor कर सकते हैं।