2017-02-20 2 views
0

Ich möchte ein Java-Projekt erstellen, das Werte von einer Methode übernimmt und dann diese Werte an eine andere Methode übertragen werden und dann die Werte ausdrucken, wenn ich es setze in den gescannten Werten in der (void main) und verwenden Sie die checkLines Methode, es würde funktionieren. Aber ich möchte eine (Read) -Methode erstellen, die die Werte übernimmt, und diese Werte werden an eine Methode (checkLines) übergeben, um die Werte zu erhalten. Problem ist, dass die zweite Methode die Scannerwerte nicht liest.Java-Werte von einer Void-Methode dann zu einer anderen Methode

import java.util.Scanner; 

public class Somethin { 
      static double a1,b1,a2,b2; 
    public static void main(String[] args) { 
    Read(a1,b1,a2,b2); 
    checkLines(a1,b1,a2,b2); 
    } 

    public static void Read(double a, double b, double c , double d){ 

     Scanner scan = new Scanner(System.in); 

     System.out.print("Please enter a1: "); 
     double a1 = scan.nextDouble(); 

     System.out.print("Please enter b1: "); 
     double b1 = scan.nextDouble(); 

     System.out.print("Please enter a2: "); 
     double a2 = scan.nextDouble(); 

     System.out.print("Please enter b2: "); 
     double b2 = scan.nextDouble(); 

     scan.close(); 
    } 

    public static void checkLines (double a1 , double b1, double a2, double b2){ 

    if (a1 == a2) { 

     System.out.println("Line 1 and Line 2 are parallel"); 
    } 

    if (a1 * a2 == -1){ 
     System.out.println("Line 1 and Line 2 are perpendicular"); 
    } else { 
     System.out.println(" The lines are intersecting"); 
     System.out.println(" There points of intersection are"); 
     double x = ((b2 - b1)/(a2-a1)); 
     double y = (a1*(x) + b1); 
     System.out.println(" X = " +x); 
     System.out.println(" y = " + y); 

    } 

} 



} 
+0

Gibt es einen Grund, warum Ihre Methoden ungültig sein müssen? Oder rufen Sie checkLines ab dem Ende von Read einfach auf – Eabryt

+0

Ihre 'Read'-Methode deklariert ihre eigenen lokalen Variablen - also werden Ihre Felder nicht zugewiesen. –

Antwort

1

Es sollte so sein, aber dies ist eine schlechte Gewohnheit, die Sie neue Klasse für die get erstellen müssen und setzen Methode, die Sie über Sie mehr über Java lernen müssen, sprechen Ich schlage vor, Sie kaufen ein Buch

import java.util.Scanner; 
public class Somethin 
{ 
    //Declare data fields 
    //Outside of every method to prevent creating local variables 
    private static double a1,b1,a2,b2; 
    public static void main(String[] args) 
    { 
     //setRead() method call 
     setRead(); 
     //checkLines() method call 
     checkLines(); 

    } 
    public static void setRead() 
    { 
     //This method ask the user for input 
     Scanner scan = new Scanner(System.in); 
     System.out.print("Please enter a1: "); 
     a1 = scan.nextDouble(); 
     System.out.print("Please enter b1: "); 
      b1 = scan.nextDouble(); 

      System.out.print("Please enter a2: "); 
      a2 = scan.nextDouble(); 

      System.out.print("Please enter b2: "); 
      b2 = scan.nextDouble(); 
    } 
    public static Double getA1() 
    { 
     //get method return a double value not void 
     return a1; 

    } 
    public static Double getB1() 
    { 
     //get method return a double value not void 
     return b1; 

    } 
    public static Double getA2() 
    { 
     //get method return a double value not void 
     return a2; 

    } 
    public static Double getB2() 
    { 
     //get method return a double value not void 
     return b2; 

    } 
    public static void checkLines() 
    { 
     //This method display the inputted values 
     if(getA1()==getA2()) 
     { 
      System.out.println("Line 1 and Line 2 are parallel"); 
     } 
     if(getA1()*getA2()==-1) 
     { 
      System.out.println("Line 1 and Line 2 are perpendicular"); 
      } 
     else 
     { 
       System.out.println(" The lines are intersecting"); 
       System.out.println(" There points of intersection are"); 
       double x = ((getB2() - getB1())/(getA2()-getA1())); 
       double y = (getA1()*(x) + getB1()); 
       System.out.println(" X = " +x); 
       System.out.println(" y = " + y); 

      } 


    } 



} 
+0

Danke Mann, jeder gute Buchvorschlag wäre großartig. Ich bin ein extremer Idiot in Java – Fawaz

+0

Ich schlage vor, ein eBook über "Java-Programmierung Joyce Farrell" Sie ist eine sehr talentierte Java-Programmierer Lehrer und ihre Bücher ist auf Punkt, wenn dies Ihre Frage beantworten bitte akzeptieren Sie es als eine Antwort – abcOfJavaAndCPP

+0

überprüft den Code und es hat funktioniert, danke. Auch wird das Buch auschecken. Danke noch einmal – Fawaz

0

Sie müssen die Vars nicht erklären a1 (usw.) in der Read() Methode. Sie überschatten die Klassenvariablen mit demselben Namen.

1

Es sollte so sein.

Scanner scan = new Scanner(System.in); System.out.print("Please enter a1: "); 
a1 = scan.nextDouble(); System.out.print("Please enter b1: "); 
b1 = scan.nextDouble(); System.out.print("Please enter a2: "); 
a2 = scan.nextDouble(); System.out.print("Please enter b2: "); 
b2 = scan.nextDouble(); 
Verwandte Themen