我正在制作一个游戏类型的东西,有三个类,结合起来。 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”。为什么呢?
答案 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();