#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. Вам не нужно быть очень опытным. Просто имитируйте то, что делают все существующие классы: все начинаются с заглавной буквы, все их методы и переменные начинаются со строчной буквы. Вы делаете обратное, но иногда нет.