2012-03-22 2 views
-1

Я один один класс 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]); 


      } 

     } 
} 

Надеется, что это берется строка и преобразование его в целочисленном массив .. Я не уверен, что я сделал это право еще но это еще не мой вопрос.

В моем основном методе, который я пытаюсь вызвать метод отображения:

Главные:

string1 = input.next(); 
LargeInteger firstInt = new LargeInteger(string1); 
System.out.printf ("First integer: %s \n", firstInt.display()); 

Поскольку мой метод отображения является недействительным, это не работает, но я не уверен, что сделать это возврат .. если что-нибудь? Что я могу сделать?

ответ

1

Ваш метод display печатает значение напрямую. Вместо этого вы хотите построить String, а затем вернуть это.

Предлагаю начать с того, чтобы просто вернуть постоянную строку. Когда это работает, попробуйте создать строку «на лету».

+0

ах имеет смысл! – Sackling

0

Отображаемый метод фактически выводит на экран. Все, что вам нужно сделать, это изменить свой код:

string1 = input.next(); 
LargeInteger firstInt = new LargeInteger(string1); 
System.out.println ("First integer:"); 
firstInt.display(); 
0

Вам нужно возвращать строку:

public String display() {   
    String result=""; 
    for (int i = 0; i < intArray.length; i++) {  
    // create string representation 
    } 
    return result; 
} 
0

Ваш метод отображения должен возвращать строку.

public String display() { 

     String temp = ""; 
     for (int i = 0; i < intArray.length; i++) { 

      temp = temp + intArray[i].ToString(); 
     } 

     return temp; 
    } 
+0

Поскольку метод не отображается, но возвращает строку, я бы предложил вам перезаписать метод ToString() вашего класса LargeInteger. –

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, и это бы быстро съедало память и время обработки.

Редактировать: Исправлена ​​опечатка в коде и упрощалось использование цикла для каждого.

+0

Это выглядит красиво и полезно знать. Я не буду использовать его для этого домашнего задания, но я ценю его. – Sackling

1

Есть в основном две вещи, которые приходят на мой взгляд, вы могли бы сделать:

  1. Используйте класс BigInteger как это делает именно то, что вы хотите.
  2. Измените метод display вернуть String - Я предлагаю вам использовать 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 или что-то еще, связанное с его использованием.

+0

Я изменю имя. Цените помощь. использование класса BigInteger запрещено для этого назначения. – Sackling

Смежные вопросы