2013-12-01 2 views
-1

Это то, что я до сих пор прокручиваю до главного, и вы увидите // часть 7, где я должен сделать небольшой цикл, содержащий статут if, который выполняет поиск моего дерева, т.е. Person для имен начиная с ч в заданном дереве sp1Как я могу найти набор деревьев, содержащий имена, начинающиеся с буквы H? если это так, напечатайте имена (JAVA)

import java.util.*; 

public class assignment8 { 

    public static void main(String[] args) { 

     //question1 
     System.out.println(months.MARCH.season()); 
     System.out.println(months.SEPTEMBER.season()); 
     System.out.println("------------------"); 

     //question2 
     TreeSet<Person> sp1 = new TreeSet<Person>(); //a set of people(person is the object) 
     sp1.add(new Person("David")); 
     sp1.add(new Person("Sarah")); 
     sp1.add(new Person("BenDover")); 
     sp1.add(new Person("Jack")); 
     sp1.add(new Person("Mark")); 
     System.out.println(sp1); 
     TreeSet<Person> sp2 = new TreeSet<Person>(); //a set of people(person is the object) 
     sp2.add(new Person("David")); 
     sp2.add(new Person("Sarah")); 
     sp2.add(new Person("Jess")); 
     sp2.add(new Person("James")); 
     sp2.add(new Person("Adam")); 
     System.out.println(sp2); 
     //part1 
     System.out.println("Boolean: "+sp1.containsAll(sp2)); 

     //part2 
     TreeSet<Person> insp = new TreeSet<Person>(sp1);   
     insp.retainAll(sp2);   
     System.out.println("Intersection: " +insp); 

     //part3 
     TreeSet<Person> unsp = new TreeSet<Person>(sp1);   
     unsp.addAll(sp2);   
     System.out.println("Union: " +unsp); 

     //part4 
     TreeSet<Person> diffsp = new TreeSet<Person>(sp1);   
     diffsp.removeAll(sp2);   
     System.out.println("Dfference in sp1 and sp2: " +diffsp); 

     //part5 
     TreeSet<Person> diffsp1 = new TreeSet<Person>(sp2);   
     diffsp1.removeAll(sp1);   
     System.out.println("Dfference in sp2 and sp1: " +diffsp1); 

     //part6 
     System.out.print("Are diffsp & diffsp1 the same: "+diffsp.equals(diffsp1)); 

     //part7 
     for (Person current : sp1){ 
     if(current.charAt(0)=='m' || current.charAt(0)=='M'){ 
     System.out.println("Name begining with M:"+current.toString()) 


    } 
} 
//Question 1 
enum Season { 

     SPRING,SUMMER,AUTUMN,WINTER; 

    public String toString(){ 
      switch(this){ 
      case SPRING: 
      return "Spring"; 
      case SUMMER: 
      return "Summer"; 
      case AUTUMN: 
      return "Autumn"; 
      default: 
      return "WINTER"; 
      } 
    } 
} 
enum months { 

    JANUARY,FEBUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER; 

    public String toString(){ 
     switch(this){ 
     case JANUARY: 
     return "January"; 
     case FEBUARY: 
     return "Febuary"; 
     case MARCH: 
     return "March"; 
     case APRIL: 
     return "April"; 
     case MAY: 
     return "May"; 
     case JUNE: 
     return "June"; 
     case JULY: 
     return "July"; 
     case AUGUST: 
     return "August"; 
     case SEPTEMBER: 
     return "September"; 
     case OCTOBER: 
     return "October"; 
     case NOVEMBER: 
     return "November"; 
     default: 
     return "December"; 
     } 
    } 
     public Season season(){ 
      int k = this.ordinal(); //gets a month and makes k == to the ordinal value of that month 
      if (k == 0 || k == 10 || k ==11) 
       return Season.WINTER; 
      else if (k==7 || k==8 || k==9) 
       return Season.AUTUMN; 
      else if (k==4 || k==5 || k==6) 
       return Season.SUMMER; 
      else 
       return Season.SPRING;    
     } 
    } 
    final class Person implements Comparable<Person>{ 

     private final String sName; 
     Person(String n){sName = n;} 
     public String name(){return sName;} 
     public String toString(){return sName;} 

     public boolean equals(Object ob){ 
      if (!(ob instanceof Person)) 
       return false; 
      Person p = (Person)ob; 
      return sName.equals(p.sName); 
     } 
     public int compareTo(Person p){ 
      return sName.compareTo(p.sName); 
     } 
     public int hashCode(){ 
      return sName.hashCode(); 
     } 
    } 
+0

Вы знаете, Java 'TreeSet' не имеет Шара)' 'метод (? И метод 'charAt' возвращает символ' 'не' String'. –

+0

Хотя если вы использовали 'for (Person j: sp1)', то ОК. –

+0

Так как бы я его написал? btw, что у меня есть в части 7 - мусор, я пытался случайным образом –

ответ

-2

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

Итак, в цикле foreach вы можете использовать этот метод getter для проверки состояния флага объекта.

+0

Должен быть более простой способ, которым наш лектор рассказал нам все, что нам нужно сделать, это написать, как 4 строки кода, чтобы получить результат. –

+0

-1 потому что это очень плохой совет. На самом деле, никогда не следует хранить легкочитаемые ценности. – Ingo

+0

Uhmm не уверен, но объявление переменной - 1 строка, метод getter method 1 и вызов метода занимает еще 1. Таким образом, его еще более компактный :) – Igorsvee

0

Поскольку это задание не будет поставлять весь код, но может дать вам начать

TreeSet<String> set = new TreeSet<>(); 
    set.add("Hello"); 
    set.add("World"); 
    set.add("!"); 

    // making an iterator for traversing each element in the set 
    Iterator<String> iterator = set.iterator(); 
    // iterator will iterate till it has something to traverse 
    while(iterator.hasNext()){ 
     System.out.println(iterator.next()); // printing the element 
    } 

    // creating a new String 
    String s = "hello"; 
    // printing the 2nd character of the String instance 
    // Note : String is considered as 0 based index like array 
    // so it will print 'l' 
    System.out.println(s.charAt(2)); 
+0

+1 для ** не ** отправки полного решения. – Ingo

+0

Я не понимаю, что вы пытаетесь сделать здесь. Вы добавляете 3 элемента в пустой набор, но после этого я потерял, мы никогда не делали ничего подобного? –

+0

@DavidDooley хорошо всегда есть время для запуска чего-то нового. –

Смежные вопросы