не может найти символ - переменная name1 - TreeSet - PullRequest
1 голос
/ 13 июля 2010

В methodB я сделал цикл for, где дублированные имена не отображаются. Если я сделаю это для цикла в methodASet, он будет работать. Когда я пытаюсь сделать это в methodB, я получаю сообщение об ошибке «не удается найти символ - переменная name1». Обычно я использую this.nameofthemethodheader (); но теперь я знаю, что не могу сделать это для TreeSet. Может ли кто-нибудь быть любезным помочь мне здесь? Вот код Спасибо. Имейте в виду, что я хочу использовать это для цикла, который я сделал.

public class MyMates  
{

  public MyMates()
  {
    super();    
    names = new TreeSet<String>();  
  }

  public static void methodASet()
  {

    String[] name1 = new String[] {"Amy", "Jose", "Jeremy", "Alice", "Patrick"};
    String[] name2 = new String[] { "Alan", "Amy", "Jeremy", "Helen", "Alexi"};
    String[] name3 = new String[] { "Adel", "Aaron", "Amy", "James", "Alice" };
  }

public static void methodB()
    {


    for (int i = 0; i < name1.length; i++) 
    {
     names.add(name1[i]);
    }
    System.out.println(names);

    for (int i = 0; i < name2.length; i++)
    {
       names.add(name2[i]);
    }   
    System.out.println(names);

    for (int i = 0; i < name3.length; i++)
    {
       names.add(name3[i]);
    }   
    System.out.println(names);


    Dialog.alert("repeated names not selected");
   }

Ответы [ 3 ]

3 голосов
/ 13 июля 2010

name1, name2 и name3 являются локальными переменными;их область действия ограничена методом, в котором они объявлены.За пределами этой области они не имеют значения.

2 голосов
/ 13 июля 2010

Объявите String [] name1 и т. Д. Вне метода, затем поместите в метод только «name1 = new String []» и т. Д.

  String[] name1 = null;
  String[] name2 = null;
  String[] name3 = null;

  public static void methodASet()
  {

    name1 = new String[] {"Amy", "Jose", "Jeremy", "Alice", "Patrick"};
    name2 = new String[] { "Alan", "Amy", "Jeremy", "Helen", "Alexi"};
    name3 = new String[] { "Adel", "Aaron", "Amy", "James", "Alice" };
  }
1 голос
/ 13 июля 2010

Хорошо, попробуйте это: (Я пишу это просто для работы ... на мой взгляд, это ужасный код)

import java.util.Set;
import java.util.TreeSet;

public class MyMates {

private static String[] name1 = null;
private static String[] name2 = null;
private static String[] name3 = null;
private static Set<String> names;

public MyMates() {
    methodASet();
    names = new TreeSet<String>();
}

public static void methodASet() {

    name1 = new String[]{"Amy", "Jose", "Jeremy", "Alice", "Patrick"};
    name2 = new String[]{"Alan", "Amy", "Jeremy", "Helen", "Alexi"};
    name3 = new String[]{"Adel", "Aaron", "Amy", "James", "Alice"};
}

public static void methodB() {

    for (int i = 0; i < name1.length; i++) {
        names.add(name1[i]);
    }
    System.out.println(names);

    for (int i = 0; i < name2.length; i++) {
        names.add(name2[i]);
    }
    System.out.println(names);

    for (int i = 0; i < name3.length; i++) {
        names.add(name3[i]);
    }
    System.out.println(names);
}

public static void main(String[] args) {
    MyMates polop = new MyMates();
    MyMates.methodB();
}
}

Это печатает:

[Алиса, ЭмиДжереми, Хосе, Патрик]

[Алан, Алекси, Алиса, Эми, Хелен, Джереми, Хосе, Патрик]

[Аарон, Адель, Алан, Алекси, Алиса, Эми, ХеленДжеймс, Джереми, Хосе, Патрик]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...