Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2011, 22:03   #1
3dg_fan
Пользователь
 
Аватар для 3dg_fan
 
Регистрация: 25.12.2010
Сообщений: 38
По умолчанию как использовать Enum в Java?

всем привет)
первый раз использую enum, да и вообще это моя 4 программа на Java )
задача состоит в том, что вводятся буквы типа стринг, пока не введется буква для выхода, все буквы записываются в вектор, затем нужно уже работать с всей полученной строкой из букв. Буквы могут быть только BGBGGB (B - boy, G- girl), написала пока такие классы, как по условию задачи..
Код:
public enum Gender {
	MALE, FEMALE
}
Код:
public class Person {
	Gender g;
	public Person(Gender g)
	{
		this.g = g;
	}
	public String toString()
	{
		return null;
		
	}

}
Код:
import java.util.Vector;
public class DragonLaunch {
	Vector v= new Vector();
	
	public void kidnap(Person p)
	{
		v.add(p);
		
	}
	
	boolean willDragonEatOrNot()
	{
		return false;
		
	}	
}
Код:
import java.util.Scanner;

import java.util.Scanner;
public class DragonTest {

	public static void main(String[] args) {
		
	      Scanner input = new Scanner(System.in);
	      DragonLaunch dragon = new DragonLaunch();
	    
	      boolean Quit = false;
	      while (!Quit)
	      {  
	         System.out.print("Enter B or G (Q to quit): ");
	         String s = input.next(); 
	         if (s.equals("Q") || s.equals("q"))
	         {
	             Quit = true;
	         }
	         else 
	         {  
	        	 Gender gF = Gender.FEMALE; 
                       // тут ошибка Gender.FEMALE cannot be resolved
	        	 Gender gM = Gender.MALE;
	           //тоже самое
	             Person perM = new Person(gM);
	 			 if( s.equals("B"))
	 				{
	 				 dragon.kidnap(perM);
	 				}
	 			Person perF = new Person(gF);
	 			 if( s.equals("G"))
	 				{
	 				 dragon.kidnap(perF);
	 				}
	         }  
	      }
	}

}
ошибки в последнем классе DragonTest
даже не знаю, правильно ли я делаю, мне нужно различать введенные буквы по Male или Female.
Буду благодарна за любую помощь

Последний раз редактировалось 3dg_fan; 18.09.2011 в 22:05.
3dg_fan вне форума Ответить с цитированием
Старый 18.09.2011, 23:29   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Явовские енумы - самые мощные из тех, что я когда-либо видел.

Итак, по порядку:
1. Зачем нужен Vector, причём даже не шаблонный? Вместо него советую:
List<Person> v = new ArrayList<Person>();

2. Если переопределяете базовый метод (в данном случае toString), то пишется так:

@Override
public String toString()
{
return null; // да, null лучше не юзать - будет падать в непредсказуемых местах
}

3. Много логики не там, где надо. Мой вариант:
Код:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Entry
{
	static public enum Gender
	{
		FEMALE,
		MALE;
		
		static public Gender create(String token) throws Exception
		{
			if (token.toLowerCase().equals("g")) return Gender.FEMALE;
			if (token.toLowerCase().equals("b")) return Gender.MALE;
			throw new Exception();
		}
	}
	
	static public class Person
	{
		private Gender gender;
		
		public Person(Gender gender)
		{
			this.gender = gender;
		}
		
		public Gender gender()
		{
			return this.gender;
		}
	}
	
	static public class DragonLaunch
	{
		List<Person> people;
		
		public DragonLaunch()
		{
			this.people = new ArrayList<Person>();
		}
		
		public void kidnap(Person p)
		{
			this.people.add(p);
		}
		
		boolean willDragonEatOrNot()
		{
			return false;
		}
	}

	public static void main(String[] args)
	{
		Scanner input = new Scanner(System.in);
		
		DragonLaunch dragon = new DragonLaunch();
		while (true)
		{
			String token = input.next();
			if (token.toLowerCase().equals("q")) break;
			
			try
			{
				dragon.kidnap(new Person(Gender.create(token)));
			}
			catch (Exception ex)
			{
				System.out.println("Invalid token " + token);
			}
		}
	}
}

Последний раз редактировалось Carbon; 18.09.2011 в 23:41.
Carbon вне форума Ответить с цитированием
Старый 19.09.2011, 17:31   #3
3dg_fan
Пользователь
 
Аватар для 3dg_fan
 
Регистрация: 25.12.2010
Сообщений: 38
По умолчанию

Carbon, спасибо!
Большинство методов еще не дописаны, поэтому мало логики) да и запуталась в main функции, что куда, спасибо за вариант
3dg_fan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Enum. Как выставить нужное значение? TwiX Общие вопросы C/C++ 12 04.09.2011 10:39
Не работает перечисление (enum). Casper-SC Общие вопросы .NET 3 01.02.2010 18:16
enum Syltan Общие вопросы C/C++ 6 26.11.2009 19:24
Какой метод использовать (java) I_cope Общие вопросы по Java, Java SE, Kotlin 2 19.11.2009 23:22
Работа с enum istoe Microsoft Office Excel 2 28.08.2009 12:53