Профил
Loading...
+ Нов въпрос
Ker1m avatar Ker1m 16 Точки

Задача 03. Simple Expression от Java Basics Exam - 1 June 2014 - Недостатъчна памет.

Здравейте, става дума за задача 03. Simple Expression от тук, и не само. Интересува ме защо при един и същ код понякога ми показва грешка за недостатъчна памет, дори и с примерното решение, което е дадено със задачата, а понякога не. Това заради кода ли е или заради системата за проверка? 
 

Това е първоначалното ми решение, което от 10 опита само веднъж тръгна.

import java.math.BigDecimal;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
	Scanner scan = new Scanner(System.in);

	String inputString = scan.nextLine();
	scan.close();
	inputString = inputString.replaceAll(" ", "");
	String[] arrayString = inputString.split("(\\+)|((?<=-)|(?=-))");

	BigDecimal sum= new BigDecimal(0);
        boolean plus = true;
	for(String temp: arrayString){
	    if(temp.equals("-")){
	        plus = false;
        } else {
	        sum = plus ? sum.add(BigDecimal.valueOf(Double.parseDouble(temp))): sum.subtract(BigDecimal.valueOf(Double.parseDouble(temp)));
	        plus = true;
        }
    }
        System.out.print(sum.toPlainString());
    }
}

Това е примерното решение, което също показва грешка, но по-рядко.

import java.math.BigDecimal;
import java.util.Scanner;

public class SimpleExpression {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String expression = scanner.nextLine();
		expression = expression.replace(" ", "");
		String[] numbers = expression.split("[^0-9.]+");
		String[] operators = expression.split("[0-9.]+");
		BigDecimal sum = new BigDecimal(numbers[0]);
		for (int i = 1; i < operators.length; i++) {
			BigDecimal number = new BigDecimal(numbers[i]);
			if (operators[i].equals("+")) {
				sum = sum.add(number);
			} else if (operators[i].equals("-")) {
				sum = sum.subtract(number);
			} else {
				throw new IllegalArgumentException(
					"Invalid operator: " + operators[i]);
			}
		}
		System.out.println(sum.toPlainString());
	}

}

 

0
Programming Basics
MartinBG avatar MartinBG 2887 Точки

Проблемът най-вероятно е в системата за проверка, защото от вчера и аз имам аналогичен проблем с решения на Java в Judge, като се наложи да събмитвам 10+ пъти едно и също решение докато мине.

1