小编Tra*_*ton的帖子

Java - 复杂程序中的二维数组索引操作

在提出我的问题之前,我想先澄清一些事情.首先,我是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的单元格,每个单元格包含一个空格''(用单引号完成)

  • 使用第一个参数随机设置myFloorLocation(floor puppy is)
  • 使用第二个参数随机设置myRoomLocation(房间小狗在)
  • 将myHidingPlaces [myFloorLocation] [myRoomLocation]设置为char'P'
  • 将myWinner设置为单个空格
  • 将myFound设置为false

方法:

  • 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 arrays indexing

6
推荐指数
1
解决办法
823
查看次数

Java - 错误:类"类名"中的构造函数"构造函数名称"不能应用于给定类型;

在提出我的问题之前,我想先澄清一些事情.首先,我是Java和编程的新手.第二,这是我的第一篇文章,所以如果我做错了什么,请放轻松.最后,在本文的任何回复中,我都不希望任何具体的解决方案.那些问题让我想出来.我想要的是解释为什么我的测试代码不会编译/运行.为了更好地理解这个问题,我将粘贴赋值信息,然后粘贴给定的Driver类,然后粘贴Driver类访问的类代码.我有的编译器错误显示在标题中,但由于它相当模糊,这里是我得到的确切错误的屏幕截图.

以下是作业:

您将设计一个类"LostPuppy.java",它代表在多层建筑物中丢失的小狗,每层楼的房间数量相同.在实例化(或创建)该类对象的过程中,每层楼的每个房间都将被初始化为空(为此目的,您将实际使用空间''字符),并且将选择一个随机房间,其中小狗丢失.为此,字符"P"将被放置在该随机位置.有关构造函数的更多详细信息如下所示.

这个类的一个对象被用作两个玩家的游戏,轮流搜索小狗,一次一个房间,直到发现不幸的小犬.该对象的实例化和搜索将由一个"驱动程序"程序执行,该程序已经提供给您,允许您只需要集中精力开发该类(驱动程序在文件"PuppyPlay.java"中)

字段(当然,所有字段都是私有的):

  • 一个名为myHidingPlaces的字符(char)数组.这代表建筑物,其中行是地板,列是每层楼的房间(这个建筑物有一个不寻常的编号系统;地板和房间都从零开始).

  • 两个整数将占据小狗丢失的地板和房间,名为myFloorLocation和myRoomLocation.

  • 一个名为myWinner的char,当玩家找到小狗时,它将被分配玩家的角色(驾驶员程序使用数字'1'和'2'来更清楚地区分玩家和小狗).

  • 名为myFound的布尔值,在找到小狗时设置为true.

构造函数:

  • 接收两个整数参数作为用户的输入,用于丢失小狗的建筑物的楼层数和房间数.

  • 构造函数将2D数组"myHidingPlaces"实例化为字符数组,其中第一个参数用于行(theFloors),第二个参数用作列(theRooms).

  • 初始化myHidingPlaces的单元格,每个单元格包含一个空格''(用单引号完成)

  • 使用第一个参数随机设置myFloorLocation(floor puppy is)
  • 使用第二个参数随机设置myRoomLocation(房间小狗在)
  • 将myHidingPlaces [myFloorLocation] [myRoomLocation]设置为char'P'
  • 将myWinner设置为单个空格
  • 将myFound设置为false

方法:

  • 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)

java arrays constructor

4
推荐指数
1
解决办法
327
查看次数

Java - Collections.sort()的问题

我目前正在编写一个打印图书列表的程序.书籍元素的每个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 sorting collections arraylist tostring

0
推荐指数
1
解决办法
881
查看次数