如何将字符输入字符串数组?

时间:2017-07-18 07:15:00

标签: java arrays string for-loop character

我试图使用for循环将字符az输入到字符串数组中,但我没有太多运气将字符转换为字符串值,因此他们实际上会进入字符串数组。我一直得到null值作为我的输出。任何人都可以提供一些如何将字符放入字符串数组的提示吗? 这就是我到目前为止所做的:

  String[] letters = new String[26];
  for (char ch = 'a'; ch <= 'z'; ch++)
  {
     int i = 0;
     letters[i] = String.valueOf(ch);
     i++;
  }
  System.out.println(Arrays.toString(letters));

5 个答案:

答案 0 :(得分:5)

String[] letters = new String[26];
int i = 0;
for (char ch = 'a'; ch <= 'z'; ch++)
{
   letters[i] = String.valueOf(ch);
   i++;
 }
System.out.println(Arrays.toString(letters));

试试这个。 i = 0应该在循环之外。

答案 1 :(得分:0)

像Eran所说的那样将let navigationBar : UINavigationBar = { //Label to display the text let navBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: 100, height: 50)) navBar.translatesAutoresizingMaskIntoConstraints = false let navItem = UINavigationItem(title: "SomeTitle"); let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: nil, action: "selector"); let backItem = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.plain, target: self, action: #selector(backAction(_:))); //let backItem: UIBarButtonItem = backsItem navItem.rightBarButtonItem = doneItem; navItem.leftBarButtonItem = backItem; navBar.setItems([navItem], animated: false); return navBar; }(); @IBAction func backAction(_ sender: Any?) { self.navigationController?.popViewController(animated: true) } 移到循环之外,或者只是不使用另一个计数器,但按顺序字符表示确定索引:

int i = 0;

此外,您不必使用其他本地变量,当然可以String[] letters = new String[26]; for (char ch = 'a'; ch <= 'z'; ch++) { int index = (int) ch - 97; letters[index] = String.valueOf(ch); } System.out.println(Arrays.toString(letters));

答案 2 :(得分:0)

每次插入字母[0],将变量i保持在循环外。

String[] letters = new String[26];
  int i = 0;
  for (char ch = 'a'; ch <= 'z'; ch++)
  {
     letters[i++] = String.valueOf(ch);
  }
  System.out.println(Arrays.toString(letters));

答案 3 :(得分:0)

for (char ch = 'a'; ch <= 'z'; ch++){
     int i = 0;
     letters[i] = String.valueOf(ch);
     i++;
}

您需要了解它的作用:在每次迭代时,您将变量i初始化为0,这样您就永远不会在其他地方写字而不是字母[0]

你只需要将它设置为0,然后递增它,所以只需将指令放在循环之前

另一种简单的方法是:

char[] letters = "abcdefghijklmnopqrstuvwxyz".toCharArray();

答案 4 :(得分:0)

出于特定目的,使用Java 8 Streams,您甚至不需要循环。

String[] letters = IntStream.rangeClosed('a', 'z').mapToObj(i -> Character.toString((char)i)).toArray(String[]::new);
System.out.println(Arrays.toString(letters));

要打破它:

  • IntStream.rangeClosed(int, int)Stream到第二个int生成int char个,包括两个端点。我们使用它是因为没有CharStream类(出于某种原因),但我们仍然可以使用'a' s 'z'int,它们将被隐式转换为mapToObj值。
  • int接受一个函数,该函数会将Stream的每个int转换为一个对象。这里有点混乱,因为从Stringint没有单步转换,我们首先需要将int解释为字符值。因此,我们将每个i(名为char)投射到char,然后将其换成Stringi -> Character.toString((char)i)的转换:{{1} }。这将为我们留下Stream<String>
  • 现在,根据您的问题,我们希望输出为String[]StreamtoArray方法,但这会给我们带来恼人的Object[]结果。相反,我们将提供我们想要用于构建数组的方法。我们不想要任何花哨的内容,因此我们只需使用String数组的标准初始值设定项:toArray(String[]::new)

之后,letters将等于String个数组,每个a将连续成为zString[] letters = new String[26]; for (char c = 'a'; c <= 'z'; c++) letters[c - 'a'] = Character.toString(c); System.out.println(Arrays.toString(letters)); 的字母。

如果您无法访问Java 8或者只是不喜欢上述解决方案,那么这里是上述代码的简化版本,无需索引:

char

在Java中,int可被视为AAA AAA AA BBB BB ,因为在表面之下,它们都存储为数字。