繁体   English   中英

StringTokenizer数组

[英]StringTokenizer array

Java的。 所以我想输入一个整数数组,然后使用StringTokenizer打印出最大值。 我知道如何使用整数来执行此操作,但是当我尝试使用数组来执行此操作时,将字符串转换为int命令(Integer.parseInt)失败了-无法从int转换为int []。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String strTmp;
        StringTokenizer strTok;
        while ((strTmp = in.readLine()) != null && strTmp.length() != 0) {
            strTok = new StringTokenizer(strTmp);

        int[] c;

        c = Integer.parseInt(strTok.nextToken());

        int max = 0;
        for (int i = 0; i < c.length; i++) {
            if (c[i] > max) {
                max = c[i];
            }
        }
        System.out.println(max);
    }
}
}

我该如何解决该问题,或者应该使用其他命令?

您似乎对实际上是否需要数组感到困惑。 您正在解析一个 ,但尝试将该int分配给c ,它是一个数组变量。 您实际上并不需要一个,因为您只需要记住当前的最大值以及刚刚解析的值即可:

int max = Integer.MIN_VALUE;
while (strTok.hasMoreTokens()) {
    int value = Integer.parseInt(strTok.nextToken());
    if (value > max) {
        max = value;
    }
}

如果您真的想要一个数组,那么在解析它们之前,您需要知道有多少个令牌,这很棘手。

另一种选择是创建一个List<Integer>

// First parse everything...
List<Integer> values = new ArrayList<>();
while (strTok.hasMoreTokens()) {
    values.add(Integer.parse(strTok.nextToken());
}

// Then you can find the maximum value in the list

就个人而言,如果您只需要找到最大值,则我倾向于第一种方法。

 int[] c;

 c = Integer.parseInt(strTok.nextToken());

您试图将单个Integer对象分配给int数组。

而是使用int[index] = Integer.parseInt(strTok.nextToken());

Integer.parseInt(String)返回一个整数,而不是Integer array 您必须将返回值Integer存储在一个int变量中,例如

int i = Integer.parseInt(String);

您必须迭代整数数组并将其索引值设置为返回的整数值

for (int i = 0; i < c.length; i++) {
           c[i] = Integer.parseInt(strTok.nextToken());
            if (c[i] > max) {
                max = c[i];
            }
        }

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM