名称输出显示“null”Java

时间:2015-11-05 16:08:58

标签: java

我正在制作一个游戏类型的东西,有三个类,结合起来。 NOT HOMEWORK;的爱好。

三类代码:

转轮:

  public class CounterGameRunner
  {
  // instance variables - replace the example below with your own
   public static void main(String [] args){
    Scanner input = new Scanner(System.in);

    CounterGameCounter game = new CounterGameCounter();

    System.out.println("You want to play a game I see. What is your name?");

    String name = input.next();

    game.NameIn(name);


    CounterGAME game1 = new CounterGAME();

    game1.actual();

}
}

实际游戏:

public class CounterGAME
{
    // instance variables - replace the example below with your own

        Scanner input = new Scanner(System.in);

        int number;
        int count=1;
        boolean loop = true;
    public  CounterGAME(){


    }

    public void actual(){

        CounterGameCounter game2 = new CounterGameCounter();


        System.out.println("Guess a number between 1 and 101, see how many times you get it!");

         number=input.nextInt();
         int r = (int)(Math.random() * (100) + 1);
        while(loop==true){


    if(number < r){
        System.out.println("Too small, try again");
        number = input.nextInt();
        count++;
        game2.Counter(count);

      } else if(number == r){
        System.out.println("Wow, you won! Who'd have thought?");
          count++;
           game2.Counter(count);
          break;

     System.out.println(game2.done());

      } else if(number > r){
         System.out.println("Too large, try again");
          number = input.nextInt();

          count++;

         game2.Counter(count);
     }


       }





      }



 }

专柜类:

 public class CounterGameCounter
  {
       // instance variables - replace the example below with your own



 private String Name; 

String done1;
int correct;

public CounterGameCounter(){



}



public String NameIn (String nm){
   Name = nm;
    return Name;
}

public String NameOut(){

    return Name;

}


public void Counter(int count){

   correct = count;

}

public int getCount(){



    return correct;

}


public String done(){
  done1 = "Name:    "           + NameOut() + "\n" + 
          "Times Answered:    " + getCount();




    return done1;
  }



}

问题:

计数器正常工作,其他所有内容最终都能正常显示和运行。但是,我在开头输入的任何名称在运行程序时始终显示“null”。为什么呢?

2 个答案:

答案 0 :(得分:3)

您的变量名称确实令人困惑,您的代码中存在许多不良做法,但名称中的null是因为您在Counter中创建了新的CounterGAME

public void actual(){    
    // here
    CounterGameCounter game2 = new CounterGameCounter();  
    // more code
}

更改实际以接收CounterGameCounter

public void actual(CounterGameCounter game2){
    // more code
}

并称之为:

public static void main(String [] args){
    Scanner input = new Scanner(System.in);  
    CounterGameCounter game = new CounterGameCounter();
    System.out.println("You want to play a game I see. What is your name?");
    String name = input.next();
    game.NameIn(name);
    CounterGAME game1 = new CounterGAME();    
    game1.actual(game);
    // more stuff
}

免费提示:

  • 使用String getName()void setName(String)
  • 使用lowercase

    启动变量,对象和属性名称
    String name;
    Object object;
    
  • 变量名称必须具有代表性和描述性

    CounterGameCounter counterGameCounter = new CounterGameCounter();
    

    这也适用于Object名称:

    GameCounter gameCounter = new CounterGameCounter();
    

答案 1 :(得分:-1)

试试这个:

String name = input.nextLine();

而不是:

String name = input.next();