从main方法调用int数组的显示方法

时间:2012-03-22 15:26:51

标签: java

我有一个类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());

因为我的显示方法无效,这不起作用,但我不知道该怎么回事..如果有的话?我该怎么办?

6 个答案:

答案 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)

基本上我可以做两件事:

  1. 使用课程BigInteger,因为它完全符合您的要求。
  2. 更改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();
    }
    
  3. 另外我建议不要调用成员变量intArray,因为它已经包含在它的类型信息中。最好将其称为valuecontents或与其使用更相关的内容。

答案 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;
    }
相关问题