java - StringTokenizer 数组

标签 java arrays stringtokenizer parseint

Java。 所以我想输入一个整数数组,然后使用 StringTokenizer 打印出最大值。我知道如何使用整数执行此操作,但是当我尝试使用数组执行此操作时,String to 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);
    }
}
}

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

最佳答案

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

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

如果您只需要找到最大值,我个人更喜欢第一种方法。

关于java - StringTokenizer 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20311712/

相关文章:

c++ - 数组分配下标号

python - 选择行,使特定列包含列表中的值

java - 将字符串转换为整数数组 ex String st = "1 2 3 4 5"转换为 ar=[1,2,3,4,5]

java - 忽略带字符串分词器的括号?

java - Selenium + gradle + testng,driver.quit()上出现UnsatisfiedLinkError

java - 日期比较困惑

php - 将大型数组转换为无循环的关联数组

java - 在java中以2个字符分隔符分割字符串

java - (非静态)内部类的构造方法引用?

java - Collectors.toMap 给出编译错误 (String,List<String) 不适用于参数