public class task1
{
public static void main(String args[])
{
StringClass s3 = new StringClass("ANYTHING");
System.out.println("Lower Case: " + s3.toLowerCase());
}
}
public class StringClass
{
private char[] data;
public StringClass(){
}
public StringClass(char[] input)
{
this.data = new char[input.length];
for(int i = 0; i < input.length; i++)
{
data[i] = input[i];
}
}
public StringClass(String s)
{
this.data = s.toCharArray();
}
public StringClass toLowerCase()
{
int a;
char ch;
StringClass newStr = new StringClass();
newStr.data = new char [data.length];
newStr.data = this.data;
for(int i = 0; i < data.length; i++)
{
if( data[i] >= 'a' && data[i] <= 'z')
{
newStr.data[i] = data[i];
}
else
{
a = (int) data[i] + 32;
ch = (char) a;
newStr.data[i] = ch;
}
}
return newStr;
}
}
因此,当我在main方法中调用此s3.toLowerCase()
函数时,它正在返回参考内存位置。虽然我想访问转换为小写的值。我不知道如何从方法StringClass
返回的toLowerCase()
实例的转换后的char数组中获取String表示形式。另一个线程没有解释如何从toString()
方法返回数组。
答案 0 :(得分:0)
将先前链接为原始问题的信息与@Tom注释中链接的信息相结合:在StringClass
类中添加以下方法替代:
@Override
public String toString() {
return new String(data);
}
通过此更改,您的task1
类输出:
小写:任何东西
toString
方法定义应打印的内容,而不是StringClass@5c647e05
之类的内容。 new String(data)
由data
数组中的字符组成新字符串。
StringClass@5c647e05
是从Object.toString
返回的字符串。 toString
永远不能返回char数组,因为它是Object
类(所有Java类的父级)中声明的,它返回String
。因此,正如汤姆所说,我们返回数组的字符串表示形式。
链接
答案 1 :(得分:0)
我只需要这个函数,创建这个函数后,我可以从函数中调用return对象,然后将String放入对象内部。
def localize_and_round_datetime(dt, tz):
"""
Similar to tz.normalize(tz.localize(dt)), but rounds any time in non-existing hour to the time right after it.
"""
result = tz.normalize(tz.localize(dt))
if result.replace(tzinfo=None) == dt:
return result
# DT belongs to the leap hour. find the datetime right after leap
# see: DstTzInfo.localize()
tzinfo_dst_idx = bisect_right(tz._utc_transition_times, dt)
new_tz = tz._utc_transition_times[tzinfo_dst_idx]
return pytz.UTC.localize(new_tz).astimezone(tz)