Привет, У меня возникли трудности с одним из моих проектов программирования (я не прошу код, у меня просто проблема с логикой программы). Назначение - создать программу, в которой вы принимаете строковое представление 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);
}
}
Я не понимаю, почему люди не голосуют за мой пост ... – Rocketsm46
В своем основном методе вы никогда не вызываете toString() – ndrone
@ Rocketsm46 просто догадайтесь, не прочитав весь вопрос: отформатируйте свой вопрос. Стена текстовых вопросов трудно читать. плюс, это слишком много кода, попробуйте получить фрагмент из части, что связано с вопросом. – Zhedar