zhangnana666777
2017-04-05 07:56
采纳率: 18.2%
浏览 2.8k
已采纳

新手 java 在构造函数中给类中的变量赋值问题

package complex_number;
import java.util.*;

public class ComplexNumber {

public static void main(String[] args){
    java.util.Scanner scanner = new java.util.Scanner(System.in);
    float m_dRealPart;
    float m_dImaginPart;

    System.out.println("Please enter the real and imaginary parts of the plural:");
    m_dRealPart=scanner.nextFloat();
    m_dImaginPart=scanner.nextFloat();
    System.out.println("\n");
    System.out.println("What kind of operation do you want to do? (1 Plus, 2 minus, 3 multiply, 4 divide)");
}

/*构造函数,ComplexNumber,将实部和虚部置0*/
public ComplexNumber(){
m_dRealPart=0;
m_dImaginPart=0;
}

    请问在构造函数的时候为什么会错?
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 厄页木一化十 2017-04-05 08:05
    已采纳

    这两个变量的作用域有问题,是在main入口函数中定义的,但是却在构造函数中使用,这个是不行的。你可以把两个变量定义为类级的,然后两个函数中就可以用了。
    package complex_number;
    import java.util.*;
    public class ComplexNumber {
    float m_dRealPart;
    float m_dImaginPart;_**
    public static void main(String[] args){
    java.util.Scanner scanner = new java.util.Scanner(System.in);

    System.out.println("Please enter the real and imaginary parts of the plural:");
    m_dRealPart=scanner.nextFloat();
    m_dImaginPart=scanner.nextFloat();
    System.out.println("\n");
    System.out.println("What kind of operation do you want to do? (1 Plus, 2 minus, 3 multiply, 4 divide)");
    

    }

    public ComplexNumber(){
    m_dRealPart=0;
    m_dImaginPart=0;
    }
    }

    打赏 评论
  • Mingyueyixi 2017-04-05 08:04

    你的变量:

     m_dRealPart和m_dImaginPart
    

    在main方法中,构造方法根本就访问不到这两个家伙。对于构造方法来说,哎,这两货色是哪来的,我不认识。
    简单来说,一个方法不能直接访问只属于另一个方法中的东西。
    解决方法:你要把这两个变量的声明放在类的下面,和方法处于同一级别,这样变量就是类的“东西”,就可以被其他方法使用了。

    打赏 评论
  • geferdezero 2017-04-05 08:12

    首先明白构造函数是用来干嘛的,构造函数是用来初始化类用的。用来给类中的或者父类中的成员赋值或者操作用的。m_dRealPart,m_dImaginPart这两个变量并不是ComplexNumber的成员,所有你在构造函数里面赋值肯定是错的。main方法使特殊的方法,不属于类所有。你在main方法中定义表面这是main方法中的变量。

    打赏 评论

相关推荐 更多相似问题