【问题标题】:Java - Converting String to char[] [closed]Java - 将字符串转换为 char[] [关闭]
【发布时间】:2013-04-15 17:07:06
【问题描述】:

我的代码需要一些帮助。我想将一个String对象转换为一个char[],使用toCharArray()方法,但是我不能让它工作。

我在一个名为 Wordlist 的类中有这个函数:

static public char[] Contains(String w)
  {
     if (list.contains(w)) return w.toCharArray();
         else return null;
  }

我用字符串变量 res 调用函数:

char[] result = new char[4];
result = WordList.Contains(res); 

然后它似乎返回null,因为result的值为null。但是如果更改包含以下内容:

static public char[] Contains(String w)
      {
         if (list.contains(w)){
            System.out.println(w.toCharArray());
          }
         else return null;
      }

然后它打印字符串。这怎么可能?我的功能有什么问题?

【问题讨论】:

  • list的类型是什么? res 的值是多少?
  • 'if (list.contains(w))' 后面的语句没有返回任何东西 -> 不会编译
  • 顺便说一句,Contains 的第二个版本甚至无法编译。
  • 你的第二个代码会出现编译错误!
  • 请使用 Java 约定:方法名应以小写开头。

标签: java arrays data-structures char


【解决方案1】:

我不知道你想要实现什么,但是:

a) 了解 java 命名约定

b) List(以及 java.util 中的少数其他人)有一个名为 .contains 的方法(因此调用你的 Contains 会导致混淆)

c) 你真的想在你的“包含”方法中返回 null 吗?

d) 列表(我假设您的意思是 java.util.List)从未被声明或初始化

e) 我认为 res 是一个字符串。它永远不会被声明为未初始化。

这应该会给你一个想法:

public static void main(String args[])
{

  String str = "someString";
  List<String> list = new ArrayList<String>();

  list.add(str);
  char[] charArray = containsString(str,list);
  System.out.println(charArray);
}
public static char[] containsString(String str, List<String> list)
{
   if (list.contains(str)) return str.toCharArray();
       else return null;
}

【讨论】:

  • 考虑使用 Set 而不是 List。
  • 好主意,我同意,因为集合不允许重复。我使用了一个列表,因为我认为他需要一个列表。谢谢你。
  • 在检查“包含”时,集合通常也更有效。 (HashSet: O(1), ArrayList: O(n))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 2013-03-14
  • 2017-12-01
  • 1970-01-01
  • 2016-06-23
  • 2013-11-11
  • 1970-01-01
相关资源
最近更新 更多