Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图引用;这";引用当前字符串对象。不确定我是否';我做对了_Java_Class_Object_This - Fatal编程技术网

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
的上下文,即其包含成员
编号的封闭类。您可能还想添加一个如何调用该方法(包括对象实例化)的示例,那么我的方法是否完全错误?如果是这样的话,什么是不正确的??我的教诲是让我们利用这个。我可以在代码中作废什么?我需要和不需要哪些代码行。无需参考
此编号
-只要
编号
就可以了(
此编号
也可以,但它是“代码混乱”)。您的方法还可以-不用担心:)正在将我的my
this.number.substring(x,y)
存储到另一个语法正确的字符串中?谢谢你,伙计@杰夫:如果它编译,它在语法上是正确的。将此临时结果存储在
String
类型的临时变量中也是一种良好做法;然而,在您的特殊情况下,重新指定this.number=this.number.substring(x,y)
在语义上也是正确的,因为它只丢弃前导(非相关)零。请注意,
str
只在方法
countDigits
执行时存在,而
此.number
即使在方法返回后仍然存在。