Как может я данные поиска о книге от ее числа штрихкода? [закрытый]

Когда вы объявляете ссылочную переменную (т. е. объект), вы действительно создаете указатель на объект. Рассмотрим следующий код, в котором вы объявляете переменную примитивного типа int:

int x;
x = 10;

В этом примере переменная x является int, и Java инициализирует ее для 0. Когда вы назначаете его 10 во второй строке, ваше значение 10 записывается в ячейку памяти, на которую указывает x.

Но когда вы пытаетесь объявить ссылочный тип, произойдет что-то другое. Возьмите следующий код:

Integer num;
num = new Integer(10);

Первая строка объявляет переменную с именем num, но она не содержит примитивного значения. Вместо этого он содержит указатель (потому что тип Integer является ссылочным типом). Поскольку вы еще не указали, что указать на Java, он устанавливает значение null, что означает «Я ничего не указываю».

Во второй строке ключевое слово new используется для создания экземпляра (или создания ) объекту типа Integer и переменной указателя num присваивается этот объект. Теперь вы можете ссылаться на объект, используя оператор разыменования . (точка).

Exception, о котором вы просили, возникает, когда вы объявляете переменную, но не создавали объект. Если вы попытаетесь разыменовать num. Перед созданием объекта вы получите NullPointerException. В самых тривиальных случаях компилятор поймает проблему и сообщит вам, что «num не может быть инициализирован», но иногда вы пишете код, который непосредственно не создает объект.

Например, вы можете имеют следующий метод:

public void doSomething(SomeObject obj) {
   //do something to obj
}

В этом случае вы не создаете объект obj, скорее предполагая, что он был создан до вызова метода doSomething. К сожалению, этот метод можно вызвать следующим образом:

doSomething(null);

В этом случае obj имеет значение null. Если метод предназначен для того, чтобы что-то сделать для переданного объекта, целесообразно бросить NullPointerException, потому что это ошибка программиста, и программисту понадобится эта информация для целей отладки.

Альтернативно, там могут быть случаи, когда цель метода заключается не только в том, чтобы работать с переданным в объекте, и поэтому нулевой параметр может быть приемлемым. В этом случае вам нужно будет проверить нулевой параметр и вести себя по-другому. Вы также должны объяснить это в документации. Например, doSomething может быть записано как:

/**
  * @param obj An optional foo for ____. May be null, in which case 
  *  the result will be ____.
  */
public void doSomething(SomeObject obj) {
    if(obj != null) {
       //do something
    } else {
       //do something else
    }
}

Наконец, Как определить исключение & amp; причина использования Трассировки стека

71
задан A.H. 23 November 2011 в 19:29
поделиться

10 ответов

Существует очень простое веб-решение, законченное по ISBNDB.com, на который можно хотеть посмотреть.

Редактирование: Обновленная ссылка документации API, теперь там является версией 2, доступной также

Ссылка на цены, и разделяет на уровни здесь

, можно быть в порядке всего через несколько минут (эти примеры от API v1):

  • регистр на сайте и добирается, ключ для использования API
  • пробуют URL как:

    http://isbndb.com/api/books.xml?access_key= {yourkey} &index1=isbn&results=details&value1=9780143038092

results=details получает дополнительные детали включая число карточного каталога.

Как в стороне, обычно штрихкод является ISBN или в isbn10 или в isbn13. Просто необходимо удалить последние 5 чисел, если Вы используете сканер, и Вы берете 18 чисел.

Вот демонстрационный ответ:

<ISBNdb server_time="2008-09-21T00:08:57Z">
  <BookList total_results="1" page_size="10" page_number="1" shown_results="1">
    <BookData book_id="the_joy_luck_club_a12" isbn="0143038095">
      <Title>The Joy Luck Club</Title>
      <TitleLong/>
      <AuthorsText>Amy Tan, </AuthorsText>
      <PublisherText publisher_id="penguin_non_classics">Penguin (Non-Classics)</PublisherText>
      <Details dewey_decimal="813.54" physical_description_text="288 pages" language="" edition_info="Paperback; 2006-09-21" dewey_decimal_normalized="813.54" lcc_number="" change_time="2006-12-11T06:26:55Z" price_time="2008-09-20T23:51:33Z"/>
    </BookData>
  </BookList>
</ISBNdb>
61
ответ дан Speed 24 November 2019 в 13:07
поделиться

Примечание: я - парень LibraryThing, таким образом, это - частичная самореклама.

Смотрят на этот ответ StackOverflow , который покрывает некоторые хорошие способы получить данные для данного ISBN

К Вашим проблемам, Amazon включает простой DDC (Dewey); Google не делает. WorldCat API делает, но необходимо быть библиотекой OCLC для использования его.

проблема ISBN/UPC сложна. Предпочтите ISBN, если можно найти их. Книги в мягкой обложке массового рынка иногда спорт UPCs на внешней стороне и ISBN на внутренней части.

участники LibraryThing разработали несколько страниц по проблеме и по усилиям отобразить два:

, Если Вы покупаете у Границ, штрихкоды Вашей книги все будут stickered, законченным с их собственными внутренними штрихкодами (названный "BINC"). Наиболее раздражающе независимо от того, что связующее звено, которое они используют, становится более твердым и более твердым удалять чисто со временем. Я не знаю ни о каком API, который преобразовывает их. LibraryThing делает это screenscraping.

Для API, я пошел бы с Amazon. LibraryThing является хорошей опцией не-API, разрешая BINCs и добавляя DDC и LCC для книг, которые не имеют их путем рассмотрения других выпусков "работы".

то, Что отсутствует, является частью маркировки. Кто-то должен создать хороший шаблон PDF для этого.

16
ответ дан Community 24 November 2019 в 13:07
поделиться

Редактирование было бы довольно легко, если бы у Вас был ISBN, но преобразовывающий от UPC до ISBN не так легко, как Вы хотели бы.

Вот некоторый код JavaScript для него от http://isbn.nu , где это сделано в сценарии

if (indexisbn.indexOf("978") == 0) {
   isbn = isbn.substr(3,9);
   var xsum = 0;
   var add = 0;
   var i = 0;
   for (i = 0; i < 9; i++) {
        add = isbn.substr(i,1);
        xsum += (10 - i) * add;
   }
   xsum %= 11;
   xsum = 11 - xsum;
   if (xsum == 10) { xsum = "X"; }
   if (xsum == 11) { xsum = "0"; }
   isbn += xsum;
}

Однако, который только преобразовывает от UPC до ISBN [приблизительно 116] из времени.

можно хотеть посмотреть штрихкод, сканируя страницу проекта, также - поездка одного человека для сканирования книг.

, Таким образом, Вы знаете [приблизительно 113] Amazon Web Services . Но это предполагает, что амазонка имеет книгу и просканировала в UPC.

можно также попробовать UPCdatabase в http://www.upcdatabase.com/item/ {UPC}, но это также неполно - по крайней мере, это растет..

база данных Библиотеки Конгресса является также неполной с UPCs до сих пор (хотя это довольно всесторонне), и более твердо быть автоматизированным.

В настоящее время, кажется, что необходимо было бы записать это сами для имения высокоуровневого поиска, который возвращает простую информацию (и пробует каждый сервис)

8
ответ дан Philip Rieck 24 November 2019 в 13:07
поделиться

Моя жена библиотекаря использует http://www.worldcat.org/ , но они выключают ISBN, Если можно просканировать это, Вы являетесь золотыми. Смотря на несколько книг, похоже, что UPC является тем же или связанный с ISBN

, О, , у этих парней есть функция для того, чтобы сделать преобразование от UPC до ISBN

2
ответ дан sblundy 24 November 2019 в 13:07
поделиться

Походит на вид задания, которое можно было бы заставить небольшую компанию-разработчика программного обеспечения делать для Вас...

более серьезно, существуют сервисы, которые предоставляют интерфейс каталогу ISBN, www.literarymarketplace.com.

На worldcat.com, Вы можете создавать URL с помощью ISBN, который возьмет Вас прямо к книжной странице детали. Та страница не так очень полезна, потому что это - все еще очистка HTML для получения данных, но у них есть ссылка для загрузки книжных данных в паре "стандартных" форматов.

, Например, их демонстрационная книга: http://www.worldcat.org/isbn/9780060817084 Имеет ссылку на загрузку формата "Примечания" http://www.worldcat.org/oclc/123348009?page=endnote&client=worldcat.org-detailed_record , и можно получить данные из того файла очень легко. Это связано от их собственного числа OCLC, не ISBN, но царапанья для преобразования, который не тверд, и у них может все же быть хороший интерфейс, чтобы сделать это.

3
ответ дан davenpcj 24 November 2019 в 13:07
поделиться

Используя веб-сайт Вещь Библиотеки , можно просканировать в штрихкодах (весь штрихкод, не только ISBN - если у Вас есть сканирование "клин", Вы находитесь в удаче), и создайте свою библиотеку. (Это - превосходная социальная сеть - думают StackOverflow для книжных энтузиастов.)

Затем с помощью раздела TOOLS, можно экспортировать библиотеку. Теперь Вы имеете текстовый файл для импортирования/анализирования и можете создать маркировки, карточный каталог, и т.д.

1
ответ дан Doug L. 24 November 2019 в 13:07
поделиться

Я боюсь, что проблемой является доступ к базе данных. Компании платят для присваивания UPC и таким образом, база данных не свободно доступна. сайт UPCdatabase , упомянутый Philip, является запуском, как UPCData.info, но они - вводимый пользователь - что означает неполный и возможно неточный.

можно всегда входить в UPC к Google и получать хит, но это не очень автоматизировано. Но это действительно разбирается в нем большую часть времени.

я думал, что помнил Jon Udell, делающего что-то вроде этого (например, видят это ), но это был просто базирующийся ISBN.

Похож, Вы нашли новый проект для кого-то продолжить работать!

1
ответ дан JohnMeyers 24 November 2019 в 13:07
поделиться

Если Вы желаете использовать Amazon, можно реализовать его легко с LINQ к Amazon.

1
ответ дан Simon_Weaver 24 November 2019 в 13:07
поделиться

Работая в библиотечном мире, мы просто подключаемся к LMS, вводим штрих-код и получаем данные. Я полагаю, что существует ряд бесплатных LMS-провайдеров - наберите в Google "open source lms".

Примечание: Возможно, это работает с ISBN...

0
ответ дан 24 November 2019 в 13:07
поделиться

Вы можете найти реализованный PHP инструмент поиска ISBN на Dawson Interactive .

0
ответ дан 24 November 2019 в 13:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: