2015-11-19 6 views
-1
  1. Позвольте пользователю ввести два целых числа a и b. Имеют два метода, называемых суммой и продуктом, и когда они используются с входами a и b, они возвращают свою сумму и продукт.
  2. И еще одна часть, которая позволяет пользователю вводить 3 действительных числа a b и c. Используйте метод Discriminant (с вводом a (! = 0), b, c), чтобы вернуть значение D = b^2-4ac. Если а = 0, дискриминант и корни не существуют. Программа должна вывести следующее:
    • Вы ввели = ..., Ь = ..., C = ...
    • квадратное уравнение ахх + Ьх + с = 0
    • дискриминант является D = ... {D вычисляется по формуле D = в * в-4 * A * C}

Внутри основного тела программы, с помощью условных операторов проверьте следующее:Методы на Java с/без возврата пользовательского ввода, простые, но новые для программирования

  • , если D является положительным вызвать метод TwoRoots вернуть два значения из корней

Выход из корней являются x1 = -b + Кв D/2a и x1 = -b-Sqr D/2a

  • если D отрицательный выхода нет реальных корней

я сделал первую часть, но она не работает. Это мой первый раз, используя методы, и это немного запутывает, я знаю, как их использовать без ввода пользователем. Но для этого мне нужен пользовательский ввод. Это коды, которые я пробовал: первый код - это метод с возвратом, а второй код - метод без возврата.

class quadratics1 { 

    int a,b; 
    String input1=JOptionPane.showInputDialog("Please enter an integer"); 
    a=Integer.parseInt(input1); 
    String input2=JOptionPane.showInputDialog("Please enter another integer"); 
    b=Integer.parseInt(input2); 

    int sum1(int L, int W){ 
     int sum=(L+W); 
     return sum; 
    } 

    int product1(int L, int W){ 
     int product=2*(L+W); 
     return product; 
    } 

    public static void main(String str[]){ 
     quadratics1 m = new quadratics1(); 
     System.out.println(a+" " + b+ " " + m.sum1(a,b)); 
     System.out.println(a+" " + b+ " " + m.product1(a,b)); 
    } 
} 

Ошибки я получаю являются: идентификатор ожидаемой для переменных а и Ь в строках 4 и 6

Я также попытался это:

import javax.swing.*; 

class quadratics1{ 

    void sum(int L, int W){ 
     int sum1=(L+W); 
     System.out.println(a+" " + b+ " " + m.sum1(L,W)); 
    } 

    void product(int L, int W){ 
     int product1=2*(L+W); 
     System.out.println(a+" " + b+ " " + m.product1(L,W)); 
    } 

    public static void main(String str[]){ 
     int a,b; 
     quadratics1 m = new quadratics1(); 
     String input1=JOptionPane.showInputDialog("Please enter an integer"); 
     a=Integer.parseInt(input1); 
     String input2=JOptionPane.showInputDialog("Please enter another integer"); 
     b=Integer.parseInt(input2); 
    } 
} 

Я не знаю, что я делая ошибки, я получаю ошибки для переменных. Любая помощь будет принята с благодарностью. Я пытался понять это на несколько дней. Я новичок в кодировании, и я должен это сделать завтра

Для второй части я написал этот код для уравнений, но я не знаю, как сделать его в методе.

double a, b, c,d,r,rr; 

    String input1 = JOptionPane.showInputDialog("Please, enter the first real number"); 
    a = Double.valueOf(input1).doubleValue(); 
    String input2 = JOptionPane.showInputDialog("Please, enter the second real number"); 
    b = Double.valueOf(input2).doubleValue(); 
    String input3 = JOptionPane.showInputDialog("Please, enter the third real number"); 
    c = Double.valueOf(input3).doubleValue(); 
    d= Math.pow(b,2) - 4*a*c; 
    d = Math.round(d*100)/100.0; 
    r= (-b + Math.sqrt(Math.pow(b,2) - (4*a*c)))/(2*a); 
    r = Math.round(r*100)/100.0; 
    rr= (-b - Math.sqrt(Math.pow(b,2) - (4*a*c)))/(2*a); 
    rr = Math.round(rr*100)/100.0; 
    System.out.println("You have entered a = " + a + " b = " + b + " c = " + c); 
    System.out.println("The quadratic equation is " + a + "x^2 " + b + "x " + c + " = 0"); 
    System.out.println("The discriminant is D= " + d + " D is calculated using the formula D= " + b + "^2 " + " - 4" + "("+ a + ")" + "("+ c + ")"); 
    System.out.println("The roots are " + r + " and " + rr); 
+0

@ Давид Он называет их в основном в sysout. –

+0

Что не работает в первую очередь? Вторая попытка выглядит так: методы бесконечно рекурсивные (хотя, к счастью, никогда не вызывались изначально). – David

+0

«Я получаю ошибки для переменных» на самом деле не является конкретным. Пожалуйста, покажите нам, что вы ожидаете и что видите. – BadZen

ответ

0

Ну для второй части я chosed использовать свой код в методе класса и вызовите экземпляр из другого класса, в основном. Вот код

package StackOverFlow; 


import javax.swing.JOptionPane; 

class Discriminant{ 

    public double Discriminant(){ 
double a, b, c,d; 
float e,r,rr; 

    String input1 = JOptionPane.showInputDialog("Please, enter the first real number"); 
    a = Double.valueOf(input1).doubleValue(); 
    String input2 = JOptionPane.showInputDialog("Please, enter the second real number"); 
    b = Double.valueOf(input2).doubleValue(); 
    String input3 = JOptionPane.showInputDialog("Please, enter the third real number"); 
    c = Double.valueOf(input3).doubleValue(); 
    d= Math.pow(b,2) - 4*a*c; 
    d = Math.round(d*100)/100.0; 
    e=(float) Math.sqrt(d); 
    r= (float) ((b*(-1) + e)/(2*a)); 
    r = (float) (Math.round(r*100)/100.0); 
    rr= (float) ((b*(-1) - e)/(2*a)); 
    rr = (float) (Math.round(rr*100)/100.0); 
    System.out.println("You have entered a = " + a + " b = " + b + " c = " + c); 
    System.out.println("The quadratic equation is " + a + "x^2 " + b + "x " + c + " = 0"); 
    System.out.println("The discriminant is D= " + d + " D is calculated using the formula D= " + b + "^2 " + " - 4" + "("+ a + ")" + "("+ c + ")"); 
    if (d>0){ 
     System.out.println("The roots are " + r + " and " + rr); 
    } 
    else if (d<0){ 
     System.out.print("There r not roots."); 
    } 


    return d; 
} 
} 

А класс с основным, который вызывает экземпляр:

package StackOverFlow; 


    public class test { 


    public static void main(String[] args) { 
     double dis=0; 
Discriminant a=new Discriminant(); 
dis=a.Discriminant(); 
System.out.print("\n\n\n The discriminant is" + dis); 
    }} 

Я надеюсь, что «я не знаю, как сделать это в метод» вы имели в виду что-то вроде что. Это была моя помощь на Java.Теперь я должен исправить корни x1 = [b * (- 1) + sqrD]/2 * a и x2 = [b * (- 1) -sqrD]/2 * a

Также мы забыли, что когда дискриминант отрицательно, корней нет. Я также исправляю корни (вы NEED d, r, rr как float), и я добавил, и если инструкция. Теперь, если D < 0, пользователь получает сообщение о том, что r не является корнем, если D> 0, корни печатаются.

+0

Что вы хотите вернуть из своего экземпляра для дальнейших вычислений? (здесь я возвращаю только дискриминант) –

+0

Еще один комментарий: u использовать -b вместо b * (- 1) –

+0

Как объединить эти два кода? Я знаю, что класс с основным идет вверху, а остальные посередине, но я продолжаю получать ошибки. Большое спасибо –

0

И вот первая часть. Несколько изменений здесь.

package StackOverFlow; 

import javax.swing.JOptionPane; 

class quadratics { 



    int sum1(int L, int W){ 
     int sum=(L+W); 
     return sum; 
    } 

    int product1(int L, int W){ 
     int product=2*(L+W); 
     return product; 
    } 

    public static void main(String str[]){ 
    String input1=JOptionPane.showInputDialog("Please enter an integer"); 
    int a=Integer.parseInt(input1); //Declaration and put value in the same statement. 
    String input2=JOptionPane.showInputDialog("Please enter another integer"); 
    int b=Integer.parseInt(input2);//Declaration and put value in the same statement. 
     quadratics m = new quadratics(); 
     System.out.println(a+" " + b+ " " + m.sum1(a,b)); 
     System.out.println(a+" " + b+ " " + m.product1(a,b)); 
    } 
} 

Имейте в виду, что вы должны исправить первые строки (пакет) по папке или пакета вы сохраните их.