如何将变量从一个类发送到另一个类。

时间:2013-04-08 04:45:40

标签: java class variables constructor

希望有人能帮我解决问题还为时不晚。我正在尝试创建一个程序,它有一个类(TestCode),要求用户输入4个整数。然后,我将该类中的变量发送到另一个类(MySmartDataType)。然后,我使用这些整数来执行某些计算。问题是,我不知道如何让第二个程序正确地接受这些整数。这是第一堂课。

import java.util.*;

class TestCode{

 public static void main(String args[]){
    int n1 = 0;
    int n2 = 0;
    int n3 = 0;
    int n4 = 0;

      String repeat = "Y";

    int evenTotal = 0;
    int oddTotal = 0;

    MySmartDataType msdt;       
    Scanner sc;
    sc = new Scanner(System.in);

      while (repeat == "Y"){

            System.out.println("Enter number 1 ");       
            n1 = sc.nextInt();

            System.out.println("Enter number 2 ");       
            n2 = sc.nextInt();

            System.out.println("Enter number 3 ");       
            n3 = sc.nextInt();

            System.out.println("Enter number 4 ");       
            n4 = sc.nextInt();


                 System.out.println("Would you like to continue? N for no and Y for Yes.");
                 repeat = sc.nextLine();

                 msdt = new MySmartDataType(n1,n2,n3,n4);

                 }

            evenTotal = msdt.getEvenTotal();
            System.out.println("Even total is: " + evenTotal);

            oddTotal=  msdt.getOddTotal();
            System.out.println("Odd total is: " + oddTotal);               
            System.out.println("Grand Total is: " + msdt.getTotal() );                                              
}
}

这是第二个:

import java.util.*;

class MySmartDataType {

private int myArray[] = new int [4];

myArray[4] = {n1, n2, n3, n4};

int getEvenTotal(){
int sumEven = 0;
for (int i = 0; i <= myArray.length; i++){
    if (myArray[i] % 2 == 0){
    sumEven += myArray[i];
    }
} 
System.out.println("The even total is: " + sumEven);

return sumEven;
}

int getOddTotal(){
int sumOdd = 0;
for (int i = 0; i <= myArray.length; i++){
    if (myArray[i] % 3 == 0){
    sumOdd += myArray[i];
    }
} 
System.out.println("The odd total is: " + sumOdd);

return sumOdd;

}

int getTotal(){
int sumTotal;

for (int i = 0; i <= 3; i++){
    sumTotal += myArray[i];
    }
    System.out.println("The total is: " +sumTotal);

return sumTotal;
}

}

9 个答案:

答案 0 :(得分:1)

执行setter和getter方法,以便将变量传递给另一个类。

以下是如何操作的教程:

YOUTUBE link

答案 1 :(得分:1)

全局声明变量然后为声明的变量创建getter,setter。因此,您可以通过getter方法在任何其他类中获取变量的值。

答案 2 :(得分:0)

使用public static修饰符。

示例:public static int example,现在您可以在其他课程中使用example

答案 3 :(得分:0)

MySmartDataType课程中添加以下内容。在MySmartDataType中创建4个实例变量,它们可以保存从其他类发送的数据。(例如:int var1 ...)

MySmartDataType(int num1,int num2,int num3,int num4)
{
var1 = num1;
var2 = num2;
var3 = num3;
var4 = num4;
}

在方法中使用var1 ... var4来执行操作。你可以用数组替换var1 ... var4,但是你需要每次循环读取值并执行opr(这不是一个糟糕的选择,取决于你)。

答案 4 :(得分:0)

您错过了MySmartDataType类中的构造函数。在第一个类中创建此类的对象时,将调用此构造函数;即。

msdt = new MySmartDataType(n1,n2,n3,n4);

以下没有意义,删除它

myArray[4] = {n1, n2, n3, n4};

MySmartDataType类中的构造函数将值设置为数组;

    public MySmartDataType (int n1, int n2, int n3, int n4) {
//this constructor will be called when the object of this class will be created with 4 integer parameters
      myArray[0] = n1;
      myArray[1] = n2;
      myArray[2] = n3;
      myArray[3] = n4;
    }

答案 5 :(得分:0)

我猜你现在正在学习OOP,对吧? 您可以使用一个或多个参数创建一些方法来填充第二个类属性。

例如:

function setData(int data, int pos){ myArray[pos] = data;}

您可以从头等课程中调用该方法

msdt.setData(something, 0);

答案 6 :(得分:0)

将以下构造函数添加到MySmartDataType类。

public MySmartDataType(int n1, int n2, int n3, int n4)
{
    myArray = new int[]{n1, n2, n3, n4};    
}

答案 7 :(得分:0)

试试这个:

       import java.util.*;

      class MySmartDataType {

          private int myArray[] = new int [4];


          public MySmartDataType(int n1, int n2, int n3, int n4) {
            myArray[0] = n1;
            myArray[1] = n2;
            myArray[2] = n3;
            myArray[3] = n4;
          }

         int getEvenTotal(){
         int sumEven = 0;
         for (int i = 0; i <= myArray.length; i++){
          if (myArray[i] % 2 == 0){
             sumEven += myArray[i];
           }
         } 
         System.out.println("The even total is: " + sumEven);

         return sumEven;
        }

       int getOddTotal(){
       int sumOdd = 0;
       for (int i = 0; i <= myArray.length; i++){
          if (myArray[i] % 3 == 0){
            sumOdd += myArray[i];
           }
        } 
       System.out.println("The odd total is: " + sumOdd);

       return sumOdd;

        }

        int getTotal(){
        int sumTotal = 0;

       for (int i = 0; i <= 3; i++){
          sumTotal += myArray[i];
       }
        System.out.println("The total is: " +sumTotal);

       return sumTotal;
       }

}

答案 8 :(得分:0)

http://docs.oracle.com/javaee/6/tutorial/doc/gjbbp.html

package greetings;

import javax.inject.Inject;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;

@Named
@RequestScoped
public class Printer {

    @Inject @Informal Greeting greeting;

    private String name;
    private String salutation;

    public void createSalutation() {
        this.salutation = greeting.greet(name);
    }

    public String getSalutation() {
        return salutation;
    }

    public void setName(String name) {
       this.name = name;
    }

    public String getName() {
       return name;
    }
}

Setters将变量设置为输入参数。 Getters返回一个“正在”的实例变量。例如,

Printer myobject = new Printer();
//sets instance variable 'name' to "Hello World"
myobject.setName("Hello World");
//gets instance variable 'name' with getter and sets it to mystring
String mystring = myobject.getName();
//will print "Hello World"
System.out.println(mystring);