Java中使用方法的输入和输出变量数组?

Java中使用方法的输入和输出变量数组?,java,arrays,Java,Arrays,我有两个班,测试班和主班。类测试有两个属性a和b。我想让程序与数组和用户输入的值一起工作 public class Testing{ private String a,b; public Testing(a,b){ this.a=a; this.b=b; } public void getA(){ return a; } public void getB(){ return b; } } 接下来是我的主课 public class Main{ publ

我有两个班,测试班和主班。类测试有两个属性a和b。我想让程序与数组和用户输入的值一起工作

public class Testing{
private String a,b;
public Testing(a,b){
    this.a=a;
    this.b=b;
 }  
public void getA(){
    return a;
 }
public void getB(){
    return b;
 }
}
接下来是我的主课

public class Main{
public static void main(String[] args){
Scanner ss = new Scanner(System.in);
Scanner s = new Scanner(System.in);
int x,i;
System.out.print("How many lines? ");
x = s.nextInt();
//method inputData
Testing ts[] = new Testing[x];
for (i=0; i<x; i++)
    System.out.print("Enter Value A :"); String a = ss.nextLine();
    System.out.print("Enter Value B "); String b = s.nextInt();
    ts[i] = new Testing(a,b);
 }
//method outputData
System.out.println("Output---");
for(i=0; i<x; i++){
    System.out.print("Value A"+i+" "+ts[i].getA());
    System.out.print("Value B"+i+" "+ts[i].getB());
 }
}
公共类主{
公共静态void main(字符串[]args){
扫描仪ss=新扫描仪(System.in);
扫描仪s=新的扫描仪(System.in);
int x,i;
系统输出打印(“多少行?”);
x=s.nextInt();
//方法输入数据
测试ts[]=新测试[x];

对于(i=0;i首先,应该在主方法之外声明方法。只需将方法的节复制到测试文件中。然后,实例化测试对象:

Testing test = new Testing(...)
test.inputData()
test.outputData()

我不明白,你为什么要这样做,但你可以这样尝试

一,

Testing.java

public class Testing {
    private String a, b;

    public Testing(String a, String b) {
        this.a = a;
        this.b = b;
    }

    public String getA() {
        return a;
    }

    public String getB() {
        return b;
    }

    public static int outputData(int x, Testing[] ts) {
        int i;
        for (i = 0; i < x; i++) {
            System.out.print("Value A" + i + " " + ts[i].getA());
            System.out.print("Value B" + i + " " + ts[i].getB());
        }
        return i;
    }

    public static Testing[] inputData(Scanner ss, Scanner s, int x) {
        int i;
        Testing ts[] = new Testing[x];
        for (i = 0; i < x; i++) {
            System.out.print("Enter Value A :");
            String a = ss.nextLine();
            System.out.print("Enter Value B ");
            String b = s.nextLine();
            ts[i] = new Testing(a, b);
        }
        return ts;
    }
}
public class Testing {
    private String a, b;

    public Testing(String a, String b) {
        this.a = a;
        this.b = b;
    }

    public String getA() {
        return a;
    }

    public String getB() {
        return b;
    }

    public int outputData(int x, Testing[] ts) {
        int i;
        for (i = 0; i < x; i++) {
            System.out.print("Value A" + i + " " + ts[i].getA());
            System.out.print("Value B" + i + " " + ts[i].getB());
        }
        return i;
    }

    public Testing[] inputData(Scanner ss, Scanner s, int x) {
        int i;
        Testing ts[] = new Testing[x];
        for (i = 0; i < x; i++) {
            System.out.print("Enter Value A :");
            String a = ss.nextLine();
            System.out.print("Enter Value B ");
            String b = s.nextLine();
            ts[i] = new Testing(a, b);
        }
        return ts;
    }
}
二,

正如@Fabiotk所说,您可以使用
inputData
outputData
方法
非静态
创建类对象

Testing.java

public class Testing {
    private String a, b;

    public Testing(String a, String b) {
        this.a = a;
        this.b = b;
    }

    public String getA() {
        return a;
    }

    public String getB() {
        return b;
    }

    public static int outputData(int x, Testing[] ts) {
        int i;
        for (i = 0; i < x; i++) {
            System.out.print("Value A" + i + " " + ts[i].getA());
            System.out.print("Value B" + i + " " + ts[i].getB());
        }
        return i;
    }

    public static Testing[] inputData(Scanner ss, Scanner s, int x) {
        int i;
        Testing ts[] = new Testing[x];
        for (i = 0; i < x; i++) {
            System.out.print("Enter Value A :");
            String a = ss.nextLine();
            System.out.print("Enter Value B ");
            String b = s.nextLine();
            ts[i] = new Testing(a, b);
        }
        return ts;
    }
}
public class Testing {
    private String a, b;

    public Testing(String a, String b) {
        this.a = a;
        this.b = b;
    }

    public String getA() {
        return a;
    }

    public String getB() {
        return b;
    }

    public int outputData(int x, Testing[] ts) {
        int i;
        for (i = 0; i < x; i++) {
            System.out.print("Value A" + i + " " + ts[i].getA());
            System.out.print("Value B" + i + " " + ts[i].getB());
        }
        return i;
    }

    public Testing[] inputData(Scanner ss, Scanner s, int x) {
        int i;
        Testing ts[] = new Testing[x];
        for (i = 0; i < x; i++) {
            System.out.print("Enter Value A :");
            String a = ss.nextLine();
            System.out.print("Enter Value B ");
            String b = s.nextLine();
            ts[i] = new Testing(a, b);
        }
        return ts;
    }
}

不能。您有一个测试实例数组。它必须类似于测试类中的一个静态打印方法,它将接受一个测试实例数组。您可以这样做,但这将是一个错误的关注点分离。 输入法也是如此

您可以在测试中编写一个print方法,输出特定测试实例的a和b值,然后在主方法中调用该print方法

可能是这样的:

public class Testing {
// ...

    public void getDataFromUser(Scanner s) {
         System.out.print("Enter Value A :"); this.a = s.nextLine();
         System.out.print("Enter Value B "); this.b = s.nextInt();
    }

    public void printToSysout() {
         System.out.print("Value A"+i+" "+getA());
         System.out.print("Value B"+i+" "+getB());
    }
}
然后在主方法中保持循环,如:

public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    // ..get x and such
    for (i=0; i<x; i++) {
        ts[i] = new Testing(); // create a no-args constructor for Testing
        ts[i].getDataFromUser(s);
    }

    System.out.println("Output---");
    for(i=0; i<x; i++) {
        ts[i].printToSysout();
    }
}
publicstaticvoidmain(字符串[]args){
扫描仪s=新的扫描仪(System.in);
//…得到x之类的

对于(i=0;i您可以这样做,但是这些方法应该在main方法之外创建: 要调用这些方法,您应该在主方法中使用以下方法:

  Testing  ts = new Testing();
    ts.inputData(4);
    ts.outputData(3);
要创建方法,请执行以下操作:

  //method inputData
  Testing ts[] = new Testing[x];
   for (i=0; i<x; i++)
  System.out.print("Enter Value A :"); String a = ss.nextLine();
  System.out.print("Enter Value B "); String b = s.nextInt();
   ts[i] = new Testing(a,b);
}
//方法inputData
测试ts[]=新测试[x];
对于(i=0;i
 public int[] inputData(int x){
    Testing ts[] = new Testing[x];
     for (i=0; i<x; i++)
     System.out.print("Enter Value A :"); String a = ss.nextLine();
     System.out.print("Enter Value B "); String b = s.nextInt();
   ts[i] = new Testing(a,b);
   return ts;
   }
 System.out.println("Output---");
for(i=0; i<x; i++){
System.out.print("Value A"+i+" "+ts[i].getA());
System.out.print("Value B"+i+" "+ts[i].getB());
}
 public void outputData(int x){
  for(i=0; i<x; i++){
   System.out.print("Value A"+i+" "+ts[i].getA());
    System.out.print("Value B"+i+" "+ts[i].getB());
   }
 }