1

希望有人帮助我还为时不晚。我正在尝试创建一个程序,它有一个类(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;
}

}
4

9 回答 9

2

执行 setter 和 getter 方法以将变量获取到其他类。

这是有关如何执行此操作的教程:

YouTube 链接

于 2013-04-08T04:48:20.543 回答
1

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

于 2013-05-23T10:16:56.273 回答
0

使用public static修饰符。

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

于 2013-04-08T04:51:19.023 回答
0

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

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

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

于 2013-04-08T04:51:54.337 回答
0

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

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;
    }
于 2013-04-08T04:53:11.877 回答
0

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

例如 :

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

你可以从你的第一堂课中调用那个方法

msdt.setData(something, 0);
于 2013-04-08T04:54:17.203 回答
0

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

public MySmartDataType(int n1, int n2, int n3, int n4)
{
    myArray = new int[]{n1, n2, n3, n4};    
}
于 2013-04-08T05:01:09.933 回答
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;
       }

}

于 2013-04-08T05:03:40.100 回答
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;
    }
}

设置器为您的输入参数设置一个变量。获取器返回一个正在“获取”的实例变量。例如,

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);
于 2013-05-31T03:05:29.567 回答