Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Именно дизайном, метод не использует фактические глифы для измерения ширины и так добавляет немного дополнения в случае нависающих краев.
MSDN предлагает использовать другой метод при необходимости в большей точности:
Для получения метрик, подходящих для смежных строк в расположении (например, при реализации форматированного текста), использование метод MeasureCharacterRanges или один из методы MeasureString , который берет StringFormat и передает GenericTypographic. Кроме того, удостоверьтесь TextRenderingHint для , Графика AntiAlias.
Это верно, что это дизайном, однако ссылка на принятый ответ на самом деле не прекрасна. Проблемой является использование плаваний во всех тех методах, когда то, что Вы действительно хотите использовать, является пикселями (ints).
Класс TextRenderer предназначен с этой целью и работает с истинными размерами. См. эту ссылку из MSDN для пошаговой демонстрации использования этого.
Кажется, что это могло бы также соединяться с выводом подсказок, на основе этой статьи Кбита, , Почему текст кажется отличающимся при рисовании с GDIPlus по сравнению с GDI
TextRenderer был большим для получения размера шрифта. Но в цикле рисунка, с помощью TextRenderer. DrawText был мучительно медленным по сравнению с графикой. DrawString ().
Так как ширина строки является проблемой, Ваше очень более обеспеченное использование комбинации TextRenderer. MeasureText и графика. DrawString..