在 class 方法中将数组名称作为参数传递

pass array names as parameter in class method

// My code is doing something; difficult to get.. still a concept can be grasped.
//I am having my method (searchCity) in class graph.   this method is called from main 
//class and is   yes...  selecting one array  by charachter it is passed with 
public class graph {
 int a = 1000;
 int flag = 0;
 //array of all cities having elements as connection to other cities

 public graph(){
  char [] i =  {'i','v'};
  char [] v =  {'v','u'};
  char [] u =  {'u','b','h'};
  char [] b =  {'b','p','f','u'};
  char [] h =  {'h','u','e'};
  char [] e =  {'e','h'};
  char [] p =  {'p','b','r','c'};
  char [] c =  {'c','p'};
  char [] r =  {'r','s','p'};
  char [] s =  {'s','f','r'};
  char [] f =  {'f','s','b'};
 }
 
 public void searchCity( char i, char j){
  // check for equal array as parameter i (include must )
  for (int z = 0 ; z < i.length; z ++) {
      if (i[z] == 'j') {
 int ascii = (int) 'j';
 int flag = 1; 
 System.out.println(ascii);

      }
      else {
       // checking for smallest cost in the complete array
          int ascii = (int) i[z];
          if(a>ascii)
           a=ascii;
          else continue;
      }
  }
  if (flag==0){
   char b = (char) a;
   char [] c = {'b'}; 
  }
  searchCity(c, j);
   }
 

我有一个 class,其中有许多以字母命名的数组,如 char [] a、char [] b 等。我在 class 中也有一个方法。 在 main class 中,我创建了一个对象,如果我需要传递两个字母表,这就像只调用那些传递了名称的数组的参考。 就像我在 main class 中的代码行如下: object.function(char1, char2); 这些字符将是字母(a、b、c 等)可以完成吗??如何 ??请帮忙。我搜索了它,但没有回答确切的问题。问候

我发现你的问题有点令人困惑,所以如果我离题了,请告诉我。

但是,我认为您要做的是调用一个带有字符的 char 数组。例如用字符 'a' 调用 char 数组 c。您可以使用开关的 if 条件来执行此操作。另外,你的 object.function(char1, char2) 实际上是做什么的?这将有助于我回答您的问题。

如果您询问如何将字符数组传递给函数,您需要做的就是按如下方式设置您的函数:

public static void MyFunction(char[] a, char[] b) {
    //do stuff to char arrays
}

然后当你调用函数时,你将能够通过以下方式传递它们:

char[] a = {'a', 'b', 'c'};
char[] b = {'d', 'e', 'f'};
MyObject.MyFunction(a, b);

不过,如果您发布您当前的代码会很有帮助,这样我就可以确切地知道您正在尝试做什么。

编辑:

如果您希望能够使用 char 调用数组,我建议将它们包含在 HashMap 中:

Map<Character, Character[]> graph = new HashMap<Character, Character[]>();
graph.put('i', new Character[] {'i', 'v'});
graph.put('v', new Character[] {'v', 'u'});
graph.put('u', new Character[] {'u', 'b', 'h'});
// etc.

然后你可以调用数组如下:

System.out.println(graph.get('i')[0]); // Prints 'i'
System.out.println(graph.get('i')[1]); // Prints 'v'
System.out.println(graph.get('i').length); // Prints '2'

所以函数可以是这样的:

public static void MyFunction(char a, char b) {
    graph.get(a)[0]; // grab first character in array
    for (int i=0; i<graph.get(b).length; i++) { 
        // recursively go through array with graph.get(b)[i]
    }
}

Demonstration Here

希望对您有所帮助。