我有一个类LargeInteger:
public class LargeInteger {
private int[] intArray;
public LargeInteger(String s) {
for (int i = 0; i < s.length(); i++) {
intArray[i] = Character.digit(s.charAt(i), 10);
}
}
public void display() {
for (int i = 0; i < intArray.length; i++) {
System.out.print(intArray[i]);
}
}
}
希望这是一个字符串并将其转换为一个int数组..我不确定我是否正确,但这不是我的问题。
在我的主要方法中,我试图调用显示方法:
主:
string1 = input.next();
LargeInteger firstInt = new LargeInteger(string1);
System.out.printf ("First integer: %s \n", firstInt.display());
因为我的显示方法无效,这不起作用,但我不知道该怎么回事..如果有的话?我该怎么办?
答案 0 :(得分:1)
您的display
方法正在直接打印该值。相反,您想要构建一个String
,然后返回它。
我建议你先从返回一个常量字符串开始。如果有效,请尝试动态创建字符串。
答案 1 :(得分:1)
嗯,在你的display()
方法中,你有这个:
System.out.print(intArray[i]);
会打印一个数字。
相反,您可以将方法更改为:
public String display() {
StringBuilder number = new StringBuilder();
for (int i : intArray) {
number.append(i);
}
return number.toString();
}
请注意,我使用了StringBuilder
而不是字符串连接。对于非常大的数字,这会产生更好的性能,因为通过简单连接,每次迭代都会创建两个新的String
实例,这会很快耗尽内存和处理时间。
修改:修复了代码中的拼写错误,并为每个代码简化了循环。
答案 2 :(得分:1)
基本上我可以做两件事:
BigInteger
,因为它完全符合您的要求。更改display
方法以返回字符串 - 我建议您使用StringBuilder创建它:
public String display() {
final StringBuilder result = new StringBuilder();
for (int i = 0; i < intArray.length; i++) {
result.append(intArray[i]);
}
return result.toString();
}
另外我建议不要调用成员变量intArray
,因为它已经包含在它的类型信息中。最好将其称为value
或contents
或与其使用更相关的内容。
答案 3 :(得分:0)
您显示的方法实际打印到屏幕上。您需要做的就是将代码更改为:
string1 = input.next();
LargeInteger firstInt = new LargeInteger(string1);
System.out.println ("First integer:");
firstInt.display();
答案 4 :(得分:0)
您需要返回一个字符串:
public String display() {
String result="";
for (int i = 0; i < intArray.length; i++) {
// create string representation
}
return result;
}
答案 5 :(得分:0)
您的显示方法应该返回一个字符串。
public String display() {
String temp = "";
for (int i = 0; i < intArray.length; i++) {
temp = temp + intArray[i].ToString();
}
return temp;
}