如何在while循环中声明自定义生成的字符串?

时间:2016-03-17 20:59:04

标签: java

我要做的是根据扫描仪在单个输入中扫描的令牌数量来声明一定数量的字符串,然后让这些字符串等于下一个输入。这就是我正在尝试的:

int numberOfTokens = 0;

boolean mainLoop = true;

Scanner input = new Scanner(System.in);

while(mainLoop == true)
{
   while(input.hasNext())
   {
      String int(+ numberOfTokens) = input.next(); (this doesn't work)
      numberOfTokens += 1;
   }
}

我希望我清楚说明我要做的事情。我尝试使用String数组,但它们不能用于我想要做的事情。 感谢。

3 个答案:

答案 0 :(得分:1)

你可以这样做:

String[] myStringArray = new String[abc];

其中 abc 是您从用户

获得的整数

然后

myStringArray[index]  = input.next();

索引必须是0到abc之间的有效数字

答案 1 :(得分:0)

而不是字符串变量,你应该在while循环之前声明一个这样的变量。

List<String> tokens = new ArrayList<>();
while (input.hasNext()) {
  tokens.add(input.next());
}

然后您可以对令牌进行操作,如下所示:

int n = tokens.size();

for (String token : tokens) {
  System.out.println(token);
}

答案 2 :(得分:0)

如果您事先并不知道需要存储多少个字符串,那么数组是数据结构的不良选择,至少在输入阶段是这样。使用List代替 - 这些元素按顺序保留,然后根据需要进行扩展以适应新元素。它们可以方便地使用整体,但如果你最终必须以数组形式获取字符串(例如,因为某些外部API需要该表单),那么很容易获得相应的数组。

例如:

List<String> tokens = new ArrayList<>();

while (input.hasNext()) {
    tokens.add(input.next());
    // a List keeps track of its own length
}

如果您以后想要阵列,那么您可以

String[] tokenArray = tokens.toArray(new String[0]);

List中记录的令牌数随时可用tokens.size()或转换为数组后tokenArray.length

无论如何,您无法在Java中在运行时创建新变量。