希望有人能帮我解决问题还为时不晚。我正在尝试创建一个程序,它有一个类(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;
}
}
答案 0 :(得分:1)
答案 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);