java - 将字符串输入数组,然后将字符串拆分为单个字符数组
问题描述
我正在用java编写一个程序,它允许用户输入n
字符串并将它们放入一个数组中。然后,程序获取这些字符串并将它们拆分为单个 char 字符,并将这些字符放入一个新的 char 数组中。
我正在尝试做的一个例子如下:
- 输入
n
:3 - 输入字符串:
"Cat", "Dog", "Mouse"
- 原始输入数组:
[Cat][Dog][Mouse]
- 所需的输出数组:
[C][a][t][D][o][g][M][o][u][s][e]
我的代码在运行时出现了一些问题:
- 接收输入字符串的代码行出现异常错误。代码行:
exp[i] = input.nextLine();
- 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();
}
}
解决方案
您的代码存在多个问题:
- 数组初始化不是那样工作的。作为类字段,意味着它将用 0 初始化,导致数组的长度为 0。要解决此问题,您可以在
int n; //number of strings
给n
. - 在线
tokens[i] = exp.split(" ");
确实存在编译错误,因为您试图在 exp 数组上调用 split 方法,但 split 方法来自 String 类。所以你需要打电话exp[i].split
split
方法没有做你认为它正在做的事情。我想你正在寻找toCharArray()
方法。tokens
数组应该具有您扫描的所有字符串的长度。
推荐阅读
- php - PHP - 未识别的索引变量
- ios - CAGradientLayer 的中心在旋转动画上返回错误的位置
- node.js - 从套接字数据事件nodejs获取字节
- node.js - 如何使用 NodeJS googleapis 命令从 Google Drive 获取压缩文件?
- swift - 如何初始化 UITextField 变量?
- c++ - 是否 std::map
::iterator 实例化 std::map ? - python - 来自 S3 的烧瓶流/多部分文件
- flutter - 如果数据库存在则执行flutter
- sql - update_batch 并插入到 codeigniter
- python-2.7 - 使用 configparser 将一个部分从一个配置文件移动到另一个