-1

我在打印输出时遇到问题。

类方法:

public class Account {
    private String name1;
    private String name2;
    private  double grade1;
    private  double grade2;
    private  double grade3;
    private  double average;
    public void setAccount(String a1 ,String a2 ,double b1,double b2,double b3) {

        a1=name1;
        a2=name2; 
        b1=grade1;
        b2=grade2;
        b3=grade3;
    }

    public void setaverage(double k1){
        k1=average;
    }

    public String getAccount(){
        return name1;
    }

    public String getAccount1(){
        return name2;
    }

    public double getAccount2(){
        return grade1;
    }

    public double getAccount3(){
        return grade2;
    }

    public double getAccount4(){
        return grade3;
    }

    public double getaverage(){
        return average=(grade1+grade2+grade3)/3;
    }
}

主要方法:

    public static void main(String[] args) {
        Scanner in = new Scanner (System.in);

        Account account= new Account();

        System.out.println("Enter the  frist  and last name of student" );

        String na1=in.nextLine();

        account.getAccount(na1);

    } // end main

} // end class AccountTest

我有问题account.getAccount(na1);

我试图打印一个字符串以了解程序是否有效。

那么如何打印输出呢?

我知道这个问题,因为 get 方法中没有参数,但我不知道如何打印它,因为这是我第一次使用它。

4

4 回答 4

1

这里有很多问题,但别担心,我会告诉你。你可以做很多小事来让你和其他人更容易理解你的代码。封装起初似乎令人困惑,但我发现它很快就开始有意义了。首先在您的构造函数中,您正在向后执行分配。我认为您的老师让您对每个私有变量都使用“getters”和“setters”?

创建具有这些签名的方法:

public void setName1(string n1){...}//assigns n1 to name1

public void setName2(String n2){...} //assigns n2 to name2

public void setGrade1(double g1){...} //assigns g1 to grade1

public void setGrade2(double g2){...} //assigns g2 to grade2

public void setGrade3(double g3){...} //assigns gee I wonder.

并在您的构造函数中使用它们:

public void setAccount(String n1 ,String n2 ,double g1,double g2,double g3) {

    setName1(n1);
    setName2(n2);
    setGrade1(g1);
    setGrade2(g2);
    setGrade3(g3);


}

接下来,我建议您以类似的方式命名您的 get* 方法。

 public String getName1(){...}
 public String getName2(){...}
 public double getGrade1(){...} 

等等

最后,用于印刷。完成所有设置后,打印到控制台非常容易。

System.out.println(getName1()); //will print name1 to the console.

通读代码并对其进行注释以解释(对自己)它在做什么。随着您的继续,它开始越来越像english/humanLanguageOfChoice!

我也是一名学生,所以如果任何真正的开发人员想要继续挖掘。

于 2013-01-25T14:41:18.590 回答
1

getAccount返回值,它不带任何参数。所以写这样的东西:

na1 = account.getAccount();
于 2013-01-25T14:20:27.603 回答
0

所以...一些您应该知道和学习的术语...

  1. get 方法,所谓的 getter 有一个命名约定,第一部分是 get 第二部分是带有 camelCase 的变量的名称,所以在你的情况下,getter 应该是getName1() getName2(), getGrade1(), getGrade2(), getGrade3()等等......而不是 getAccount(),你欺骗自己和其他开发者如果您不使用此约定....
  2. set 方法,所谓的 setter 也具有相同的命名约定,在您的情况下,setter 应该是setName1(), setName2(), setGrade1(), setGrade2(), setGrade3()等等
  3. getter 应该从您的类中返回变量(值),setter 应该为您的实例成员(实例或类变量)“设置”一些值......
  4. 从最后一点开始,它明确指出 getter 是 public getVariable(没有参数),例如public String getName1(),setter 是 public setVariable(将提供给实例变量的参数),例如public setName1(String name1)

在您的情况下,您没有设置并且没有给变量赋值,但是您想获得它的值,显然它将具有空值...清楚吗?

于 2013-01-25T14:43:59.997 回答
0

该方法getAccount(String input)未在您的代码中实现。

这是:account.getAccount()

于 2013-01-25T14:22:31.250 回答