Проблема возникает в вашем коде, когда последний символ ввода - «A». Это потому, что ваш первый if в цикле пытается получить доступ к символу «count + 1» во время последней итерации. И поскольку в этой позиции нет символа, вы получаете ошибку индекса.
Простейшим решением было бы сделать отдельное условие if для того же самого. Обновленный фрагмент для цикла while может выглядеть следующим образом -
# while start
while count < len_: # len_ is length of input
if count + 1 >= len_:
break # break outta loop, copy last character
current = inp[count]
next_ = inp[count + 1]
if current == 'A':
op += ( next_ + current) # op is result
count += 1
else:
op += current
# increment counter by 1
count += 1
# rest of the code after while is same
Другая небольшая проблема в вашем коде заключается в том, что при копировании последнего символа (после окончания цикла) вы должны использовать [] вместо () для ссылки на последний символ в строка ввода.
Можно поместить запросы в package-info.java
класс, в, скажем, базируются пакет Ваших объектов области. Однако необходимо использовать собственного Hibernate @NamedQueries
и @NamedQuery
аннотации, а не аннотации от javax.persistence
.
Пример package-info.java
файл:
@org.hibernate.annotations.NamedQueries({
@org.hibernate.annotations.NamedQuery(
name = "foo.findAllUsers",
query="from Users")
})
package com.foo.domain;
Затем необходимо добавить пакет к Вашему AnnotationConfiguration
. Я использую Spring, таким образом, там это - вопрос установки annonatedPackages
свойство:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="annotatedClasses">
<list>
...
</list>
</property>
<property name="annotatedPackages">
<list>
<value>com.foo.domain</value>
</list>
</property>
Можно также поместить тип и отфильтровать определения в том же файле также.
Я не думаю, что это возможно, поскольку атрибут/значения свойств Аннотации должен быть доступным во время компиляции. Поэтому Строки не могут быть воплощены в файл, который должен быть считан в своего рода процессом.
Я пытался найти, было ли что-то, что пакет-info.java смог обеспечивать, но ничего не мог найти.
Альтернативная стратегия организации могла хранить запросы как константы в Классе.
В Вашем классе объекта:
@NamedQuery(name="plane.getAll", query=NamedQueries.PLANE_GET_ALL)
Затем определите класс для своих констант запроса:
public class NamedQueries {
...
public static final String PLANE_GET_ALL = "select p from Plane p";
...
}