Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Рассмотрите Система. Численные данные. BigInteger.
Необходимо использовать класс большого количества, который использует некоторые основные математические принципалы для разделения этих операций. Этот реализация библиотеки C# BigInteger на CodePoject, кажется, является самой многообещающей. Статья имеет некоторые хорошие объяснения как операции с крупной работой чисел, также.
Также см.: Большие целые числа в C#
До Проекта идет Euler, Вы могли бы рявкать неправильное дерево при ударе исключений OutOfMemory. От их веб-сайта:
Каждая проблема была разработана согласно "одноминутному правилу", что означает, что, хотя может потребоваться несколько часов для разработки успешного алгоритма с более трудными проблемами, эффективное внедрение позволит решению быть полученным на скромно приводимом в действие компьютере меньше чем через одну минуту.
Я предполагаю, что это - C#? F# создал способами решить и эти проблемы (тип BigInt и ленивые последовательности).
можно использовать обоих методы F# от C#, если Вам нравится. Тип BigInt довольно применим с других языков, если Вы добавляете ссылку на базовый блок F#.
Ленивые последовательности являются в основном просто синтаксисом дружественные перечислители. Помещение 100 000 000 элементов в списке не является замечательным планом, таким образом, необходимо заново продумать решения обойти это. Если Вы не должны хранить информацию вокруг, выбросьте ее! Если более дешево повторно вычислить его, чем хранилище это, выбросьте его!
Как пользователь Jakers сказал, если Вы используете Большие Числа, вероятно, Вы делаете его неправильно.
Из проблем ProjectEuler я сделал, ни один не потребовал математики большого числа до сих пор. Больше о нахождении, что надлежащий алгоритм избегает больших чисел.
Хотите подсказки? Отправьте здесь, и нам можно было бы запустить интересный эйлеров поток.
См. ответы в этом поток . Вероятно, необходимо использовать одну из сторонних крупных целочисленных доступных библиотек/классов или ожидать C# 4.0, который будет включать собственный тип данных BigInteger.
До определения, сколько будет использовать память приложение, можно проверить доступную память прежде, чем выполнить операцию при помощи класс MemoryFailPoint .
Это позволяет Вам предварительно выделять память прежде, чем сделать операцию, таким образом, можно проверить, перестанет ли операция работать прежде, чем выполнить его.