首页 > 解决方案 > 将字符串输入数组,然后将字符串拆分为单个字符数组

问题描述

我正在用java编写一个程序,它允许用户输入n字符串并将它们放入一个数组中。然后,程序获取这些字符串并将它们拆分为单个 char 字符,并将这些字符放入一个新的 char 数组中。

我正在尝试做的一个例子如下:

我的代码在运行时出现了一些问题:

  1. 接收输入字符串的代码行出现异常错误。代码行:exp[i] = input.nextLine();
  2. Netbeans IDE 告诉我它找不到我尝试使用的拆分函数的符号。

我不确定我的代码有什么问题,但我觉得至少我输入字符串的部分应该可以工作。我意识到我还没有任何输出代码,因为我现在只是想让输入部分正常工作。任何建议,将不胜感激!

public class Strings {
  Scanner input = new Scanner(System.in);
  int n; //number of strings
  String[] exp = new String[n]; //input strings
  char[] tokens = new char[n]; //individual char characters

  //Gather data

  public void SetNumberStrings(){
      n = input.nextInt();
  }

  public void SetExpressions(){
      for (int i = 0; i < n; i++){
          exp[i] = input.nextLine();
      }
  }

  public void SplitExpressions(){
      for (int i = 0; i < n; i++){
          tokens[i] = exp.split(" ");
      }
  }
  public static void main(String[] args) {
       Strings exp1 = new Strings();
       exp1.SetNumberStrings();
       exp1.SetExpressions();
       exp1.SplitExpressions();

  }
}

标签: javaarraysstring

解决方案


您的代码存在多个问题:

  1. 数组初始化不是那样工作的。作为类字段,意味着它将用 0 初始化,导致数组的长度为 0。要解决此问题,您可以在int n; //number of stringsn.
  2. 在线tokens[i] = exp.split(" ");确实存在编译错误,因为您试图在 exp 数组上调用 split 方法,但 split 方法来自 String 类。所以你需要打电话exp[i].split
  3. split方法没有做你认为它正在做的事情。我想你正在寻找toCharArray()方法。
  4. tokens数组应该具有您扫描的所有字符串的长度。

推荐阅读