Как мне использовать object object1 = новый объект в моей программе?

#java

#java

Вопрос:

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

в любом случае, вот мой код

  import java.util.Scanner;


public class EP54
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);    
        System.out.print("Do you want to continue? ");
        **yesNoChecker check1 = new yesNoChecker();**
        System.out.print(EP54.yesNoChecker);
    }

   public String yesNoChecker()
   {
       if(in.equalsIgnoreCase("y") ||
         in.equalsIgnoreCase("yes") ||
         in.equalsIgnoreCase("Sure") ||
         in.equalsIgnoreCase("why not"))
         System.out.println("OK");
       else if(in.equalsIgnoreCase("y") ||
         in.equalsIgnoreCase("yes") ||
         in.equalsIgnoreCase("Sure") ||
         in.equalsIgnoreCase("why not"))
         System.out.println("Terminating.");
       else
         System.out.println("Bad Input");
   }
}
 

Пожалуйста, помогите мне! (выделенная жирным шрифтом часть — это место, где я получаю сообщение об ошибке)

Кто-нибудь может дать мне рабочую версию кода, чтобы я мог сравнить ее со своей?

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

1. yesNoChecker() — это метод, вы не можете создать его экземпляр.

2. Хорошо, я изменил свой код на это: pastie.org/2796683

3. В строке 10 я получаю сообщение об ошибке «нестатический метод yesNoChecker(java.util. Сканер) нельзя ссылаться на статическое содержимое»

4. Я отредактировал свой код следующим образом: pastie.org/2796907

5. Я сейчас в таком замешательстве. Кто-нибудь может объяснить мне всю глубину?

Ответ №1:

 import java.util.Scanner;

public class EP54
{
   public static void main(String[] args)
   {
       Scanner in = new Scanner(System.in);    
       System.out.print("Do you want to continue? ");
       String answer = in.next();
       yesNoChecker(answer);
   }

   public static void yesNoChecker(String in)
   {
       if(in.equalsIgnoreCase("y") ||
         in.equalsIgnoreCase("yes") ||
         in.equalsIgnoreCase("Sure") ||
         in.equalsIgnoreCase("why not"))
         System.out.println("OK");
       else if(in.equalsIgnoreCase("n") ||
         in.equalsIgnoreCase("no") ||
         in.equalsIgnoreCase("nope") ||
         in.equalsIgnoreCase("quit"))
         System.out.println("Terminating.");
       else
         System.out.println("Bad Input");;
   }
}
 

Понял

Ответ №2:

yesNoChecker() это функция, а не объект. В этом случае вы захотите вызвать yesNoChecker() (также известный как «вызов метода»), а не создать экземпляр yesNoChecker (также известный как «создание объекта»). Вместо этого ваш код должен выглядеть примерно так:

 import java.util.Scanner;


public class EP54
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);    
        System.out.print("Do you want to continue? ");
        yesNoChecker();
        System.out.print(EP54.yesNoChecker);
    }

   public String yesNoChecker()
   {
       // (omitted for brevity)
   }
}
 

Вы создаете экземпляры новых объектов типа класса. Например, Scanner это класс, который вы использовали здесь, который предоставляет вам Java. Когда вы говорите new Scanner() , вы создаете новый экземпляр Scanner класса.

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

1. Не забудьте вернуть строку!

2. EP54.yesNoChecker по-прежнему является методом (и не статическим). Я думаю, вы можете удалить вызов метода до завершения работы системы и просто изменить sys out на yesNoChecker() . Кстати, если это задание, разве оно не должно быть помечено как домашнее задание?

Ответ №3:

yesNoChecker — это метод, а не класс — вы не можете создать его экземпляр.

Вы можете вызвать его:

 yesNoChecker();
 

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

Ответ №4:

Вам также необходимо получить фактический ввод от класса user / Scanner.

Что-то вроде:

 String s = in.nextLine();
 

Затем вы сравниваете строку s с тем, что вам нужно («Y», «yes» и т. Д.)

Надеюсь, это поможет!

p.s. Ваша функция делает это, но подумайте, вводит ли кто-то цифру, а не букву или произведение. Всегда рекомендуется проверять входные данные перед их использованием.