在提出我的问题之前,我想先澄清一些事情.首先,我是Java和编程的新手.第二,这是我的第二篇文章,如果我做错了什么,请放轻松.最后,我想解释为什么我所做的是错误的,而不仅仅是在对这篇文章的任何回复中的粘贴解决方案.为了更好地理解这个问题,我将编写赋值信息,然后是给出的Driver类,然后是Driver类访问的类代码.
我的问题:
如何让我的'建筑'的左下角在我的2D阵列上为[0] [0]? 这是一个for循环的例子,它可以将2D数组的左下角改为[0] [0],但我尝试将它实现到我的searchRoom方法中(其中玩家角色设置为myHidingPlaces索引)我可以' t my myPidingPlaces [0] [0]是我2D阵列的左下角.我相信我需要以某种方式使用for循环编辑toString方法,但我无法弄清楚我应该怎么做.
以下是作业:
您将设计一个类"LostPuppy.java",它代表在多层建筑物中丢失的小狗,每层楼的房间数量相同.在实例化(或创建)该类对象的过程中,每层楼的每个房间都将被初始化为空(为此目的,您将实际使用空间''字符),并且将选择一个随机房间,其中小狗丢失.为此,字符"P"将被放置在该随机位置.有关构造函数的更多详细信息如下所示.
这个类的一个对象被用作两个玩家的游戏,轮流搜索小狗,一次一个房间,直到发现不幸的小犬.该对象的实例化和搜索将由一个"驱动程序"程序执行,该程序已经提供给您,允许您只需要集中精力开发该类(驱动程序在文件"PuppyPlay.java"中)
字段(当然,所有字段都是私有的):
一个名为myHidingPlaces的字符(char)数组.这代表建筑物,其中行是地板,列是每层楼的房间(这个建筑物有一个不寻常的编号系统;地板和房间都从零开始).
两个整数将占据小狗丢失的地板和房间,名为myFloorLocation和myRoomLocation.
一个名为myWinner的char,当玩家找到小狗时,它将被分配玩家的角色(驾驶员程序使用数字'1'和'2'来更清楚地区分玩家和小狗).
名为myFound的布尔值,在找到小狗时设置为true.
构造函数:
接收两个整数参数作为用户的输入,用于丢失小狗的建筑物的楼层数和房间数.
构造函数将2D数组"myHidingPlaces"实例化为字符数组,其中第一个参数用于行(theFloors),第二个参数用作列(theRooms).
初始化myHidingPlaces的单元格,每个单元格包含一个空格''(用单引号完成)
方法:
roomSearched已经收到要搜索的楼层和房间,如果房间已被搜索则返回true,否则返回false.
puppyLocation接收要搜索的楼层和房间,如果楼层和房间是小狗丢失的地方,则返回true,否则返回false.此方法不应更改任何字段.
indicesOK接收要搜索的楼层和房间,如果楼层和房间值在数组索引范围内,则返回true,否则返回false(用于检查这些索引在应用于数组时不会导致错误).
numberOfFloors返回建筑物中的楼层数(第一层从零开始).
numberOfRooms返回建筑物每层楼的房间数量(第一个房间从零开始,所有楼层都有相同数量的房间).
searchRoom接收要搜索的楼层和房间以及当前玩家(作为char类型),如果找到小狗则返回true,否则返回false.如果未找到小狗,searchRoom还会将收到的楼层和房间位置的myHidingPlaces数组设置为收到的玩家值('1'或'2')或者,当找到时,将myWinner字段设置为当前玩家并设置myFound为true.
toString显示当前的hidePlaces数组及其内容除了小狗的位置之外,小狗的位置一直隐藏,直到找到他/她将被调用的字符串(由驱动程序调用)并且发现小狗的玩家和'P'将会显示在同一个单元格中....
现在,也许是toString输出的尴尬部分.通常,当显示2D数组时,[0] [0]单元格与矩阵一样显示在左上角.然而,因为小狗决定迷失在一个建筑而不是一个矩阵中,所以在第一层(第0行)显示在它上面的第二层,第二层,最后是顶层,这样会更具视觉感觉......在上面!要保存单词,请仔细查看下一页提供的示例运行.您的输出应该与示例运行的下一页中显示的内容相同.
这是驱动程序:
import java.util.Random;
import java.util.Scanner;
/**
* This program is used as a driver program to play the game from the
* class LostPuppy. Not to be used for grading!
*
* A puppy is lost in …Run Code Online (Sandbox Code Playgroud) 在提出我的问题之前,我想先澄清一些事情.首先,我是Java和编程的新手.第二,这是我的第一篇文章,所以如果我做错了什么,请放轻松.最后,在本文的任何回复中,我都不希望任何具体的解决方案.那些问题让我想出来.我想要的是解释为什么我的测试代码不会编译/运行.为了更好地理解这个问题,我将粘贴赋值信息,然后粘贴给定的Driver类,然后粘贴Driver类访问的类代码.我有的编译器错误显示在标题中,但由于它相当模糊,这里是我得到的确切错误的屏幕截图.
以下是作业:
您将设计一个类"LostPuppy.java",它代表在多层建筑物中丢失的小狗,每层楼的房间数量相同.在实例化(或创建)该类对象的过程中,每层楼的每个房间都将被初始化为空(为此目的,您将实际使用空间''字符),并且将选择一个随机房间,其中小狗丢失.为此,字符"P"将被放置在该随机位置.有关构造函数的更多详细信息如下所示.
这个类的一个对象被用作两个玩家的游戏,轮流搜索小狗,一次一个房间,直到发现不幸的小犬.该对象的实例化和搜索将由一个"驱动程序"程序执行,该程序已经提供给您,允许您只需要集中精力开发该类(驱动程序在文件"PuppyPlay.java"中)
字段(当然,所有字段都是私有的):
一个名为myHidingPlaces的字符(char)数组.这代表建筑物,其中行是地板,列是每层楼的房间(这个建筑物有一个不寻常的编号系统;地板和房间都从零开始).
两个整数将占据小狗丢失的地板和房间,名为myFloorLocation和myRoomLocation.
一个名为myWinner的char,当玩家找到小狗时,它将被分配玩家的角色(驾驶员程序使用数字'1'和'2'来更清楚地区分玩家和小狗).
名为myFound的布尔值,在找到小狗时设置为true.
构造函数:
接收两个整数参数作为用户的输入,用于丢失小狗的建筑物的楼层数和房间数.
构造函数将2D数组"myHidingPlaces"实例化为字符数组,其中第一个参数用于行(theFloors),第二个参数用作列(theRooms).
初始化myHidingPlaces的单元格,每个单元格包含一个空格''(用单引号完成)
方法:
roomSearched已经收到要搜索的楼层和房间,如果房间已被搜索则返回true,否则返回false.
puppyLocation接收要搜索的楼层和房间,如果楼层和房间是小狗丢失的地方,则返回true,否则返回false.此方法不应更改任何字段.
indicesOK接收要搜索的楼层和房间,如果楼层和房间值在数组索引范围内,则返回true,否则返回false(用于检查这些索引在应用于数组时不会导致错误).
numberOfFloors返回建筑物中的楼层数(第一层从零开始).
numberOfRooms返回建筑物每层楼的房间数量(第一个房间从零开始,所有楼层都有相同数量的房间).
searchRoom接收要搜索的楼层和房间以及当前玩家(作为char类型),如果找到小狗则返回true,否则返回false.如果未找到小狗,searchRoom还会将收到的楼层和房间位置的myHidingPlaces数组设置为收到的玩家值('1'或'2')或者,当找到时,将myWinner字段设置为当前玩家并设置myFound为true.
toString显示当前的hidePlaces数组及其内容除了小狗的位置之外,小狗的位置一直隐藏,直到找到他/她将被调用的字符串(由驱动程序调用)并且发现小狗的玩家和'P'将会显示在同一个单元格中....
现在,也许是toString输出的尴尬部分.通常,当显示2D数组时,[0] [0]单元格与矩阵一样显示在左上角.然而,因为小狗决定迷失在一个建筑而不是一个矩阵中,所以在第一层(第0行)显示在它上面的第二层,第二层,最后是顶层,这样会更具视觉感觉......在上面!要保存单词,请仔细查看下一页提供的示例运行.您的输出应该与示例运行的下一页中显示的内容相同.
这是驱动程序:
import java.util.Random;
import java.util.Scanner;
/**
* This program is used as a driver program to play the game from the
* class LostPuppy. Not to be used for grading!
*
* A puppy is lost in a multi-floor building represented in the class …Run Code Online (Sandbox Code Playgroud) 我目前正在编写一个打印图书列表的程序.书籍元素的每个ArrayList由一个字符串(一本书的标题)和一个ArrayList(该书的作者)组成.我需要对书籍的ArrayList进行排序,使它们按字母顺序排列(按标题排序).我的问题是,当我打印新的ArrayList(我称之为Collections.sort()的列表)时,我得到的输出与我第一次打印非排序版本时的输出相同.
我myLib.sort();从我的驱动程序调用,该程序在我的Library类中转到此方法:
public void sort()
{
Collections.sort(myBooks);
}
Run Code Online (Sandbox Code Playgroud)
myBooks是我之前提到的书籍的ArrayList.根据我的阅读,Collections.sort("ArrayList name")应按字母顺序排列我的列表.如果这是不正确的,我需要使用compareTo()和equals()方法,那么这些class Book是我用于构建进入我的书籍的那些方法class Library:
public int compareTo(final Book theOther)
{
int result = 0;
if (myTitle.equals(theOther.myTitle))
{
if (myAuthors.get(0) != theOther.myAuthors.get(0))
{
result = 1;
}
}
else
{
result = 0;
}
return result;
}
public boolean equals(final Object theOther)
{
if (theOther instanceof String)
{
String other = (String) theOther;
return myTitle == other;
}
else
{ …Run Code Online (Sandbox Code Playgroud) java ×3
arrays ×2
arraylist ×1
collections ×1
constructor ×1
indexing ×1
sorting ×1
tostring ×1