有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

测试1上的java运行时错误(代码强制),但在netbeans中有效

我不熟悉代码强制,当我在NetBeans中运行此代码时,它可以正常工作,但当我在代码强制上提交它时,它会在测试1中给我运行时错误。怎么了? 这是problem

import java.util.Scanner;

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String first = input.nextLine();
    String second = input.nextLine();
    input.close();

    String first_line[] = first.split(" ");
    String second_line[] = second.split(" ");
    int first_numbers[] = new int[first_line.length];
    int second_numbers[] = new int[second_line.length];

    for (int i = 0; i < 2; i++) {
        if (Integer.parseInt(first_line[i]) >= 1)
            first_numbers[i] = Integer.parseInt(first_line[i]);
        else
            first_numbers[i] = 0;
    }
    for (int i = 0; i < second_line.length; i++)
        if (Integer.parseInt(second_line[i]) >= 1)
            second_numbers[i] = Integer.parseInt(second_line[i]);
        else
            second_numbers[i] = 0;
    int x = 0;
    try {
        for (int i = 0; first_numbers[1] < second_numbers[i]; i++)
            x++;
    } catch (Exception ex) {

    }
    System.out.println(x);
}

共 (2) 个答案

  1. # 1 楼答案

    为什么要把字符串拆分成这些

       String first_line[] = first.split(" ");
       String second_line[] = second.split(" ");
       int first_numbers[] = new int[first_line.length];
       int second_numbers[] = new int[second_line.length];
    

    您可以从一开始就初始化int,并按如下方式使用它

            Scanner input = new Scanner(System.in);
            int k = input.nextInt();
            int n = input.nextInt();
            int cout = 0;
            int[] arr = new int[k];
    

    这是我从2014年开始对这个问题的完整解决方案

    public static void main(String[] args) {
    
            Scanner input = new Scanner(System.in);
            int n = input.nextInt();
            int k = input.nextInt();
            int counter = 0, tk = 0;
            int a[] = new int[n];
    
            for(int i = 0; i < n; ++i){
                a[i] = input.nextInt();
                if((i + 1) == k){
                    tk = a[i];
                }
            }
    
            for(int i = 0; i < n; ++i){
                if(a[i] > 0 && a[i] >= tk){
                    counter++;
                }
            }
    
            System.out.println(counter);
        }
    

    我希望我能帮忙

    如果我能建议你 在开始的时候,尽可能地简化这些问题

  2. # 2 楼答案

    如果您修改最后一个for循环,如下所示,该怎么办

    int x = 0;
    for (int i=0; i<second_numbers.length; i++) {
        if (first_numbers[1] < second_numbers[i])
            x++;
    }