2015-02-16 3 views
-4

Привет, У меня возникли трудности с одним из моих проектов программирования (я не прошу код, у меня просто проблема с логикой программы). Назначение - создать программу, в которой вы принимаете строковое представление int, например: «1363», преобразовать его в int, удерживать его в массиве или списке массивов, выполнять основные операции, такие как добавление, вычитание, умножение и т. Д. затем перепишите результат, используя метод toString в строчном формате. ну, у меня проблема, просто чтобы метод toString работал правильно. например, когда я делаю проверку ввода, я создаю два объекта класса, потому что по существу там должно быть два больших числа int, и результат получается неправильным, и я не могу понять, почему. например, я останавливаю программу всякий раз, когда у вас есть буквы в строке вместо правильных цифр, но это работает только в том случае, если первый объект имеет букву, если второй объект имеет букву, он даже не распечатывает результат для первый объект, но выдает сообщение об ошибке для второго объекта. я не знаю, как это сделать, когда он проверяет ошибку для первого объекта, а затем выполняет проверку ошибок для второго объекта, вместо того, чтобы испортить программу, если второй объект имеет ошибку. вот мой код до сих пор, и мой профессор дал нам основной класс для нас, чтобы проверить наш метод toString, и я опубликую оба, любая помощь будет оценена.Java (toString and Constructors)

import java.util.ArrayList; 

public class BigInt { 


    //private static final String String = null; 

    private ArrayList <Integer> integerArray; // only need one array 
    // have to fix the toString and constructors 

    private char sign; 


    //private Object bigNum; 

    //public final int bigNum; 


    public BigInt(char sign) 

    { 
     //this.bigNum = bigNum; 
     this.sign = sign; 
     //this.sign = '+'; 

     this.integerArray = new ArrayList<Integer>(); 

    } 

    public BigInt (String input) 

    { 

     setSign(input); 

     setInt(input); 

     //addTwoBigNum(input); 

    } 
    public char getSign() 
    { 
     return sign; 
    } 

    public void setSign (String input) 

    { 

     if (input.charAt(0) == '+' || input.charAt(0) == '1' || input.charAt(0) == '2' 

       || input.charAt(0) == '3' || input.charAt(0) == '4' || input.charAt(0) == '5' 

       || input.charAt(0) == '6' || input.charAt(0) == '7' || input.charAt(0) == '8' 

       || input.charAt(0) == '9' || input.charAt(0) == '0') 

     { 

      this.sign ='+'; 

     } 

     else if (input.charAt(0) == '-') 

     { 

      this.sign ='-'; 

     } 

     else 

     { 

      System.out.println("Invalid sign"); 

     } 

    } 

    public void setInt (String input) 

    { 

     this.integerArray = new ArrayList<Integer>(); 

     for (int i= input.length() -1; i>=0; i--) 

     { 

      if (input.charAt(0) == '1' || input.charAt(0) == '2' || input.charAt(0) == '3' 

        || input.charAt(0) == '4' || input.charAt(0) == '4' || input.charAt(0) == '6' 

        || input.charAt(0) == '7' || input.charAt(0) == '7' || input.charAt(0) == '9' 

        || input.charAt(0) == '0') 

      { 

       integerArray.add(new Integer(input.charAt(i) -48)); 

      } 

      else if (input.charAt(i) == '+' || input.charAt(i) == '-' && i== 0) 

      { 

       break; 

      } 

      else if (input.charAt(i) == '+' || input.charAt(i) == '-' && input.length() ==1) 

      { 

       System.out.println("Input must contain ar least one digit"); 

      } 

      else 

      { 

       System.out.println ("This is an invalid character in the string"); 

       integerArray.clear(); 
       System.exit(0); 

       break; 

      } 

     } 

    } 

    @Override 

    public String toString() 

    { 

     String output = ""; 

     if (this.sign =='-' && this.integerArray.size() > 0) 

     { 

      output = "-"; 

     } 

     for (int i = this.integerArray.size() -1; i>=0 ; i--) 

     { 

      output = output + integerArray.get(i); 

     } 

     if(this.integerArray.size() == 0) 

     { 

      output = "no integer"; 

     } 

     return output; 
    } 
} 





public class BigIntDemo { 
    public static void main (String args []) { 
     BigInt B1 = new BigInt("1234"); 
     //BigInt B1 = new BigInt("1234asd"); 
     //BigInt B1 = new BigInt("-1234"); 
     //BigInt B1 = new BigInt("-1"); 
     //BigInt B1 = new BigInt("1"); 
     //BigInt B1 = new BigInt("0"); 
     // BigInt B1 = new BigInt("-0"); 
     //BigInt B1 = new BigInt("12222222222222233333333333333344444434"); 
     //BigInt B2 = new BigInt("4567"); 
     BigInt B2 = new BigInt("-45"); 
     // BigInt B3 = new BigInt(); 
     // BigInt B4 = new BigInt(); 
     System.out.println("explicit BigInt value is " + B1); 
     System.out.println("default BigInt value is " + B2); 
     //System.out.println("The sum of the two big ints is " + B1.add(B2)); 
     //System.out.println("please enter a new big integer value. "); 
     //note that the code for readBigInt is almost identical to constructor 
     //B1.readBigInt(); 
     System.out.print("new BigInt value is " + B1); 
    } 


} 
+0

Я не понимаю, почему люди не голосуют за мой пост ... – Rocketsm46

+1

В своем основном методе вы никогда не вызываете toString() – ndrone

+1

@ Rocketsm46 просто догадайтесь, не прочитав весь вопрос: отформатируйте свой вопрос. Стена текстовых вопросов трудно читать. плюс, это слишком много кода, попробуйте получить фрагмент из части, что связано с вопросом. – Zhedar

ответ

0

попытка удаления

System.exit(0); 

, если это выполняется для первого объекта, ваша программа никогда не достигнет объекта после этого.

+0

копия, спасибо за ваши отзывы. У меня только один вопрос, даже до того, как я поместил system.exit (0) в код, он все равно не полностью завершит проверку первого объекта THEN, переходящего ко второму объекту, что бы я сделал в этой ситуации, которая в значительной степени что мне нужно знать. – Rocketsm46

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