【发布时间】:2013-11-22 07:26:48
【问题描述】:
我正在学习java。我以前学过 ruby,所以我正在使用一些我知道有效的 ruby 代码并尝试转换为 java,但是我对这个有点迷茫,所以提前感谢。我尝试了扩展,但仍然无法正常工作:(
我创建了一个包含姓名、性别、年龄和公民身份的访问者类。我试图在 House 类中有一个新方法 AdmitNewVisitor,我可以在测试中手动插入一个新的访问者。所以,这段代码在下面可以工作,但是下一个代码将无法工作,我不知道为什么,我已经搜索了几个小时,但我的书没有示例。
我目前在做什么
public void AdmitNewVisitor( )
{
for (int i = 0; i < 2; i++)
{
numVisitors++;
visitors[numVisitors - 1] = new Visitor("Grates, Brill", "M", 66, "Alien");
}
}
我想做的事
我已更改 i
public void AdmitNewVisitor(String theName, String theGender, int theAge, String theCitizenship )
{
for (int i = 0; i < numVisitors; i++)
{
numVisitors++;
visitors[numVisitors - 1] = new Visitor(theName, theGender, theAge, theCitizenship);
}
}
新的测试方法
t.AdmitNewVisitor("Grates, Brill", "M", 66, "Alien");
在 ruby 中你会这样做
def admit_new_visitor the_name, the_gender, the_age, the_citizenship
@num_visitors += 1
@visitors[@num_visitors - 1] = Visitor.new(the_name, the_gender,
the_age, the_citizenship)
end
编辑:忘记指定错误,抱歉漫长的一天 当我执行 toString() 时,错误是没有显示任何内容,没有错误消息,只是打印我的字符串并且没有访问者应该出现的访问者。 我现在看到我不应该在循环中运行它,因为这没有意义,当我尝试时
public void AdmitNewVisitor(String theName, String theGender, int theAge, String theCitizenship)
{
numVisitors++;
visitors[numVisitors - 1] = new Visitor(theName, theGender, theAge, theCitizenship);
}
我收到错误:
error: constructor Visitor in class Visitor cannot be applied to given types
{
^
Required: String, String, int, String
found: no arguements
reason: actual and formal arguments differ in length
我相信是指Visitor类中的这行代码,所有变量在Visitor中都是public的
public Visitor(String theName, String theGender, int theAge, String theCitizenship)
编辑:每个人都非常乐于助人,但是由于我是从头开始学习并且还没有进入列表,有没有办法按照我尝试的方式做到这一点?蚂蚁一口咬掉大象
编辑 3 个访客类
import java.util.*;
public class Visitor
{
// Define Instance Variables
public String name;
public String gender;
public int age;
public String citizenship;
public int currentRoom;
// Define Constructor
public Visitor(String theName, String theGender, int theAge, String theCitizenship)
{
name = theName;
gender = theGender;
age = theAge;
citizenship = theCitizenship;
currentRoom = 0;
}
public String toString( )
{
String output = String.format("%-20s %-15s %d", name, citizenship, currentRoom);
return output;
}
}
Edit 4 忘了这个,包含在 AdmintNewVisitor 所在的 HouseTour 类中
public Visitor[ ] visitors = new Visitor[100];
编辑:已解决
嗯,我一直在修改我的代码,我想我知道问题所在。感谢所有人,但特别感谢@Dan Temple,当我不那么累的时候,我可能应该在这方面工作,所以我确切地知道我哪里出错了,但我最终使用了下面的代码,之前定义了 numVisitors = 0 所以 numVisitors++ 先出现,然后减 1 以进入数组。我相信,我可能是错的,问题是在列出我的 AdmitNewVisitor 之前列出涉及访问者的公共 String toString() 方法,或者我只是累了。在 ruby 中,在我的 new_visitor 方法之前列出我的 to_s(java 中的 toString())没有问题。再次感谢,很高兴知道我并不孤单:{o :{/ :)
public void AdmitNewVisitor(String theName, String theGender, int theAge, String theCitizenship)
{
numVisitors++;
visitors[numVisitors - 1] = new Visitor(theName, theGender, theAge, theCitizenship);
}
【问题讨论】:
-
我想如果我没有发布别人会说的所有内容,嘿发布更多代码!
-
发布足够多的代码来指出您的问题,仅此而已。
-
好的,我现在要编辑和删除,谢谢提示
-
“但是下一个代码将无法正常工作,我不知道为什么” - 请告诉我们它不起作用是什么意思?你有什么错误吗?意外输出?
标签: java ruby methods call instance