क्या कोई कृपया यह बताने में मदद कर सकता है कि मुझे अपने अंकगणितीय कार्यों में शून्य क्यों मिल रहा है? मैं इस अंकगणितीय समस्या को हल करने की कोशिश कर रहा हूं जो x और y का मान देता है लेकिन यह मुझे java.lang.arithmeticException त्रुटि दे रहा है या शून्य परिणाम दिखा रहा है। यह वास्तव में मेरे लिए मददगार होगा।

यह मेरा इनपुट है a=6,b=10,c=8,d=12,e=800,f=900

**x और y के मान प्राप्त करने के लिए इस रैखिक समीकरण का उपयोग करके हल किया जा सकता है

X = (ed -fb)/(ad -bc), y = (fa -ec)/(ad - bc)**

यही वह समस्या है जिसे मैं हल करने की कोशिश कर रहा हूं।

public class linearequation {
    
    public static void main(String[] args){
        Scanner scn= new Scanner(System.in);
        linear lin1 = new linear(scn.nextInt(),scn.nextInt(),scn.nextInt(),scn.nextInt(),scn.nextInt(),scn.nextInt());
        if(lin1.isSolvable()) {
            System.out.println(lin1.getx());
            System.out.println(lin1.gety());
        }else {
            System.out.println("No Solution");
        }
    }
}
class linear {
    private int a, b, c, d, e, f;
    int x, y;
    int den = ((a * d) - (b * c));

    public linear(int na, int nb, int nc, int nd, int ne, int nf) {
        na = a;
        nb = b;
        nc = c;
        nd = d;
        ne = e;
        nf = f;

    }

    public int geta() {
        return a;
    }

    public int getb() {
        return b;
    }

    public int getc() {
        return c;
    }

    public int getd() {
        return d;
    }

    public int gete() {
        return e;
    }

    public int getf() {
        return f;
    }

    public int getx() {
        return x = ((e * d) - (f * b)) / den;
    }

    public int gety() {
        return y = ((f * a) - (e * c)) / den;
    }


    public boolean isSolvable() {

        if (den <= 0) {
            return false;
        } else {

            return true;
        }
    }

}```
0
Zeeshan Haider 15 फरवरी 2021, 10:42
अंकगणित अपवाद का अर्थ है कि आप शून्य से विभाजित करने का प्रयास करते हैं। सही ?
 – 
g.momo
15 फरवरी 2021, 10:44
क्या आप पूर्ण त्रुटि संदेश प्रदान कर सकते हैं? मुझे लगता है कि आप 0 से विभाजित करने की कोशिश कर रहे हैं।
 – 
tibetiroka
15 फरवरी 2021, 10:44
den को 0 होने के लिए पूर्वनिर्धारित किया गया है क्योंकि इसकी गणना कंस्ट्रक्टर द्वारा a, b, c, d, e, और f को मान निर्दिष्ट करने से पहले की जाती है। कंस्ट्रक्टर में मान निर्दिष्ट करने के बाद आपको इसे सेट करना होगा।
 – 
Locke
15 फरवरी 2021, 10:45
नहीं नहीं, मेरा इनपुट है a=6,b=10,c=8,d=12,e=800,f=900 @g.momo
 – 
Zeeshan Haider
15 फरवरी 2021, 10:46
मेरा इनपुट है a=6,b=10,c=8,d=12,e=800,f=900 @tibetiroka
 – 
Zeeshan Haider
15 फरवरी 2021, 10:49

1 उत्तर

सबसे बढ़िया उत्तर

जहाँ तक मैं देख सकता हूँ linear के लिए आपका कंस्ट्रक्टर समस्या है।

आप इसमें na, nb, nc, nd, ne, nf पास कर रहे हैं और उन्हें क्रमशः a, b, c, d, e, and f के मान के रूप में पुन: असाइन कर रहे हैं, जब आप वास्तव में दूसरी तरह से असाइन करना चाहते हैं, उदा। na = a के बजाय a = na

साथ ही, आप कंस्ट्रक्टर द्वारा a...f के मान सेट करने से पहले den सेट कर रहे हैं। den को कभी भी पुन: असाइन नहीं किया जाता है और इस प्रकार 0 रहता है।

आपका कंस्ट्रक्टर इस तरह दिखना चाहिए:

public linear(int na, int nb, int nc, int nd, int ne, int nf) {
    a = na;
    b = nb;
    c = nc;
    d = nd;
    e = ne;
    f = nf;
    
    den = ((a * d) - (b * c));
}
2
Mark Rotteveel 15 फरवरी 2021, 14:17
भाई अगर मैं कंस्ट्रक्टर में मांद डालता हूं तो क्या गेटक्स में उसी मांद का उपयोग करने का कोई तरीका है?
 – 
Zeeshan Haider
15 फरवरी 2021, 11:08
आपको den को कक्षा linear के इंस्टेंस फ़ील्ड के रूप में परिभाषित करना होगा। आपने इसे अपने प्रदत्त कोड उदाहरण में इस पंक्ति द्वारा निहित रूप से किया है: int den = ((a * d) - (b * c));। इस लाइन को कम करके int den; कर दें और आपके पास अपनी कक्षा linear पर एक फ़ील्ड den होगा, जिसका उपयोग क्लास के इंस्टेंस में किया जा सकता है।
 – 
MaxRumford
15 फरवरी 2021, 11:11