Java编程错误
下面列出了我的两个类:TennisTeam类和使用它的TennisTeamApp类。有一个错误是:Java编程错误,java,Java,下面列出了我的两个类:TennisTeam类和使用它的TennisTeamApp类。有一个错误是: Player cannot be resolved to a type 有人能告诉我怎么修吗 // Kartik Patel // 16/08/2013 public class TennisTeam{ private String country; public Player player1; public Player player2; // Constructor
Player cannot be resolved to a type
有人能告诉我怎么修吗
// Kartik Patel
// 16/08/2013
public class TennisTeam{
private String country;
public Player player1;
public Player player2;
// Constructor
public TennisTeam(String countryIn){
country = countryIn;
storePlayerData(country);
}
// Gets and stores user name
public void storePlayerData(String country){
String prompt = "Enter Players Name ";
System.out.println("Getting data from country " + country);
System.out.println("Player 1, " + country +": ");
System.out.println(readString(prompt));
System.out.println("Player 2, " + country + ": ");
System.out.println(readString(prompt));
}
// Read Strings
public String readString (String prompt){
java.util.Scanner keyboard = new java.util.Scanner(System.in);
System.out.println(prompt);
return keyboard.nextLine();
}
// Assessors returning values
public String getCountry(){
return country;
}
}
public class TennisTeamApp{
public ststic void main(String [] args){
TennisTeam [ ] teams = { new TennisTeam("NZ"), new TennisTeam("AUS")};
for (TennisTeam team: teams){
System.out.println(team.getCountry() + ": ");
System.out.println(team.player1.getName() + ", ");
System.out.println(team.player2.getName());
}
}
}
使用Import语句导入播放器。播放机未解析为类型的原因是,它在可用的名称空间中不为人所知,因此修复方法是导入它。您尚未共享需要在那里的播放机类,以便编译您的TennisTeam类,因为它包含对播放机的引用。因此,在编译TennisTeam类之前,请确保您有一个已编译的Player类。如果它在那里,那么请确保已将其导入到TennisTeam类中
代码中的另一个问题是在初始化TennisTeam对象时没有初始化Player对象。因此,在访问第行中的player对象时,您将遇到空指针异常:
System.out.println(team.player1.getName() + ", ");
卡尔蒂克
出于某种原因,我喜欢把初级家庭作业做得很好,如果你把作业当作自己的作业来做,那么你肯定会被抓住作弊,除非你的老师完全不称职,同时还给你一些有用的指导。我想我只是心里的另一个聪明人。。。但这是一个稍微有用的方法
苏欧,不用再麻烦了
玩家等级:是/曾经是米娅的那个
这是一个不可变的数据传输对象。Immutable是只读的术语。这意味着一旦对象被创建,一旦构造函数完成,它就不能被更改。一个数据传输对象正是它的名字所包含的:一个对象,它的存在仅仅是为了在其他类之间传输数据,这些类实际上对数据进行处理。它没有也不应该有任何智能。。。传输对象应该尽可能简单
以下是我的团队课程版本:
如您所见,这是一个传统的控制台应用程序。运行网球应用程序时,它使用屏幕和键盘创建、填充和显示两组球员。它包含了在这个相当简单的应用程序中实际执行任务的所有代码。然而,如果/当两支球队开始真正地打网球比赛时,我想我们会想要一个单独的班级,可能是几个班级来实现比赛本身。。。即使只是保持分数也可能需要一个记分员、一些分数、一个决斗助手和一大盒松树苹果,或者可能不需要
应用程序类没有做的是记住一些东西。。。嗯,不是直接的。它创建并使用能够记住内容的传输对象
还值得注意的是,您将在所有类型的应用程序中看到相同的三个基本步骤:
输入
处理,以及
输出
因此,让这些基本步骤在代码中显式地体现ie是一个好主意,特别是对于初学者来说,因为它有助于您专注于需要解决的问题以及如何。。。不要被你不应该在这个方法/类/模块/子系统/应用程序中试图解决的问题弄糊涂。。。就像试图找到一把大面包刀来打开盒子,让菠萝打裁判的头一样,在第三盘决胜局中,外邦人通过一个狡猾的电话交换意见,结束紧张的爱情。。。显然,你应该早点准备好弹药,或者干脆把整个弗里金盒子扔给他,希望他在比赛结束前视力有所改善
重点是设计每个类来完成一组定义良好的职责。每个类都应该包含具有简单易懂名称的方法,实际上每个方法都应该实现一个简单易懂的任务。这是优秀程序设计的精髓。让事情尽可能简单有助于减少错误,减少误解。它还有助于使您的软件具有灵活性和可重用性,这意味着它更易于维护。。。为了适应当前不可预见的未来需求。。。从长远来看,这一切都有助于降低软件拥有成本,这意味着您可以比竞争对手收取更少的费用,以完成更少的工作,从而获得更多的好处。。。这很好
最后是我的主要课程:
主类有一个职责:运行应用程序
显然,这样做会根据您输入的内容产生类似以下输出的结果:
另一个挑战是,试着去掉每个团队姓氏后面的逗号。提示:认为逗号在后面的每一项之前,而不是传统的更明显的想法,即除了最后一项之外,逗号在每一项之后。。。当然,诀窍在于,很难知道何时处理最终项,但您可以轻松确定是否/何时处理列表中的第一项与后续项相对应
我希望这能有所帮助。作为初学者,你做得很好。继续努力,你会成功的
我很快就会比我更明白。。。这并不难。有一次我被一条鱼打败了。。。长话短说-
干杯。基思。玩家等级是否在同一个包中?如果没有,你导入了吗?它似乎在抱怨你没有定义什么是玩家。如果您确实有播放器源文件,请发布其内容。如果没有,那就是你的问题。你没有在任何地方实例化玩家。你所说的源是什么意思file@user2669883定义玩家身份的文件在哪里?使用导入关键字@用户2669883在中查找。他们不是因为你错了而投反对票,而是因为你给出了一个五个单词的答案,但代词不清楚。@Chris Bode:我明白了,我不认为它可能不清楚,但我现在明白了,谢谢你澄清这一点
package forums.kartikPatel.tennis;
public class Player {
private final String name;
Player(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
package forums.kartikPatel.tennis;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Team implements Iterable<Player> {
private final String country;
private final List<Player> players;
public Team(String country) {
this.country = country;
this.players = new ArrayList<>();
}
public String getCountry() {
return country;
}
public void addPlayer(Player player) {
players.add(player);
}
public Player getPlayer(int index) {
return players.get(index);
}
@Override
public Iterator<Player> iterator() {
return players.iterator();
}
}
package forums.kartikPatel.tennis;
import java.io.PrintStream;
import java.util.Scanner;
public class Application
{
private static final Scanner keyboard = new Scanner(System.in);
private static final PrintStream screen = System.out;
public void run() {
// create two new teams: New Zealand (BOO!) and Australia (YEAH!)
Team[] teams = {new Team("NZ"), new Team("AUS")};
// populate both teams with players
populate(teams);
// display both teams, and all there players.
display(teams);
}
// ------------------------------------------------------------------------
// input
// populate both teams with players
private void populate(Team[] teams) {
for ( Team team : teams ) {
screen.println("Please enter the players for: " + team.getCountry());
for (String name=readPlayersName(); name.length()>0; name=readPlayersName())
team.addPlayer(new Player(name));
screen.println();
}
}
private String readPlayersName() {
return readString("Players Name: ");
}
private String readString(String prompt) {
screen.print(prompt);
return keyboard.nextLine();
}
// ------------------------------------------------------------------------
// output
// display both teams, and all there players.
private void display(Team[] teams) {
screen.println("The line-ups are:");
for ( Team team : teams ) {
System.out.print(team.getCountry() + ": ");
for ( Player player : team )
screen.print(player.getName() + ", ");
screen.println();
}
}
}
package forums;
import forums.kartikPatel.tennis.Application;
public class Main {
public static void main(String[] args) {
new Application().run();
}
}
Please enter the players for: NZ
Players Name: Bob The Builder
Players Name: Kania Fixit
Players Name: Yazzie Can
Players Name:
Please enter the players for: AUS
Players Name: Mark Horran
Players Name: Blocka Roach
Players Name: The Reverand Fred Effing Nile
Players Name:
The line-ups are:
NZ: Bob The Builder, Kania Fixit, Yazzie Can,
AUS: Mark Horran, Blocka Roach, The Reverand Fred Effing Nile,