Java 试图引用;这";引用当前字符串对象。不确定我是否';我做对了
场景Java 试图引用;这";引用当前字符串对象。不确定我是否';我做对了,java,class,object,this,Java,Class,Object,This,场景 测验题,明天的期末考试,这个问题对我来说毫无意义,有人请告诉我符合标准的代码段。我尝试的一切都失败了。我最大的问题是我不知道如何引用“this”。所以我不知道我做得对不对,我的老师不会给我一个肯定或否定的答案,我将在下面的代码中发布我的尝试,希望有人能纠正我的错误。我将永远欠你的债 问题 编写一个BigInt类函数int countDigits(),返回BigInt对象中的有效位数(即“this”)。假设我们对BigInt(未删除前导零)有效数字使用字符串表示,从最左边的非零开始,如果Bi
测验题,明天的期末考试,这个问题对我来说毫无意义,有人请告诉我符合标准的代码段。我尝试的一切都失败了。我最大的问题是我不知道如何引用“this”。所以我不知道我做得对不对,我的老师不会给我一个肯定或否定的答案,我将在下面的代码中发布我的尝试,希望有人能纠正我的错误。我将永远欠你的债 问题 编写一个BigInt类函数int countDigits(),返回BigInt对象中的有效位数(即“this”)。假设我们对BigInt(未删除前导零)有效数字使用字符串表示,从最左边的非零开始,如果BigInt的值为0,则有效数字数为1` 我尝试过的
public int countDigits()
{
int i = 0;
while(this.number.charAt(i)=='0')//this.number will reference a string object
i++;
String str = this.number.substring(i,number.length();)//this.number will reference the string object
System.out.println("leading zeros removed : "+str);
System.out.println(" number of significant digits = "+str.length());
return str.length();
}
如果您有一个字段
编号
,则这两个表达式:
this.number
number
在代码中的效果相同。当存在与字段同名的局部变量或参数时,只需在字段名前加上this.
,从而将其隐藏起来
虽然没有直接回答你的问题,但有更多的事情要考虑,因为你有一个字符串来存储你的数字,考虑你的方法的字符串方法:
public int countDigits() {
return number.replaceAll("^0+", "").length();
}
这一行解决方案首先生成一个前导零都已删除的字符串,然后仅使用其长度。您的问题是什么?这不符合您的期望吗?确实如此,但我想知道我是否正确引用了我的字符串对象(即数字),并且我是否要将
这个.number.substring(x,y)
存储到一个字符串串中,字符串串CountDigits
(顺便说一句,在Java中方法名通常不大写)是类BigInt
的成员,该类具有类型为String
的另一个成员number
,则此
引用BigInt
的运行时实例,您可以在该实例上调用方法CountDigits
,如果愿意的话,此.number
将调用其字符串表示形式。但是这个
是可选的,因此如果您写的是数字
而不是这个.number
,那么您应该引用相同的值。编辑:代码中的参数n
用于什么?你好像没用(或者我就是瞎子)。另外,您可能打算返回str.length()
,如上所述,如果只提供一个方法而不提供任何其他类信息,则不可能这样说。假设类的典型形式,我会说“是”,但根据您所展示的内容,不可能这么说。@Jeff需要的其他信息是CountDigits
的上下文,即其包含成员编号的封闭类。您可能还想添加一个如何调用该方法(包括对象实例化)的示例,那么我的方法是否完全错误?如果是这样的话,什么是不正确的??我的教诲是让我们利用这个。我可以在代码中作废什么?我需要和不需要哪些代码行。无需参考此编号
-只要编号
就可以了(此编号
也可以,但它是“代码混乱”)。您的方法还可以-不用担心:)正在将我的mythis.number.substring(x,y)
存储到另一个语法正确的字符串中?谢谢你,伙计@杰夫:如果它编译,它在语法上是正确的。将此临时结果存储在String
类型的临时变量中也是一种良好做法;然而,在您的特殊情况下,重新指定this.number=this.number.substring(x,y)
在语义上也是正确的,因为它只丢弃前导(非相关)零。请注意,str
只在方法countDigits
执行时存在,而此.number
即使在方法返回后仍然存在。