Почему мои методы, по-видимому, не принимают значение?

#java #methods

#java #методы

Вопрос:

Я кодирую библиотечную программу для своего класса, но я столкнулся с ошибкой сразу после компиляции. Проблема для этой программы заключается в том, что мне нужно использовать 3 файла, только в одном из которых (libraryRunner) фактически есть Main. Я пытаюсь заставить оба других файла метода (libraryCard и libraryBooks соответственно) работать вместе.

Раньше я использовал логические значения и переключился на целые числа, чтобы посмотреть, исправит ли это, но я получаю ту же ошибку. Странно то, что программа, похоже, компилируется, но программа просто завершается после ранее упомянутой ошибки.

Бегун библиотеки :

 import java.util.Scanner;
public class libraryRunner
{
   public static void main (String args[])
   {
      libraryCard Joseph = new libraryCard();

      Joseph.whichBook("Sing");
   }
}
  

Что я использую в библиотечной карточке :

 
...
   public static String whichBook(String c)
   {
      if(libraryBooks.c == 1)
      {
         return("Sorry, it's already been checked out.");
      }
      else
      {
         return("Here's your book, "   c   "!");
      }
   }
}
  

Что я использую в библиотечных книгах:

 public class libraryBooks
{
   private static int hasBeenCheckedOut;

   public libraryBooks()
   {
      libraryBooks.Sing(0);
   }

   public static int Sing(int c)
   {
      hasBeenCheckedOut = c;
      return(hasBeenCheckedOut);
   }
...
  

Из того, что даже мой учитель говорит мне, программа должна теоретически скомпилироваться и запуститься, сообщая пользователю, что книга «Sing» теперь принадлежит им. Но я получаю только эту ошибку :

—-jGRASP exec: исключение java libraryRunner в потоке «main» java.lang.Ошибка NoSuchMethodError: libraryCard.whichBook(Ljava /lang /String;)Ljava/lang/String; в libraryRunner.main(libraryRunner.java:8)

—-jGRASP wedge2: код выхода для процесса равен 1. —-jGRASP: операция завершена.

Комментарии:

1. Сообщение об ошибке показывает, что фактический код в основном методе пытается вызвать libraryCard.whichBook с массивом или строками в качестве аргумента. Вероятно, вы не перекомпилировали весь свой код. Кроме того, вы совершенно не уважаете соглашения об именовании Java, и конструктор, вызывающий статический метод и изменяющий статическое поле, действительно, действительно не очень хорошая идея. Присвоение имени переменной c также не является.

2. @JBNizet Спасибо за помощь, извините, что не уважаю имена и тому подобное. Я только месяц назад научился создавать методы, так что я не самый опытный программист : (

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