Java代码编译问题 请检查错误 我已经显示了发生的运行时错误 请告诉我这里面出了什么问题

Java代码编译问题 请检查错误 我已经显示了发生的运行时错误 请告诉我这里面出了什么问题,java,Java,这就是问题所在[黑客等级挑战-洗盘子]: 错误: Exception in thread "main" java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:862) at java.util.Scanner.next(Scanner.java:1485) at java.util.Scanner.nextInt(Scanner.java:2117) at java

这就是问题所在[黑客等级挑战-洗盘子]:

  • 错误:

     Exception in thread "main" java.util.NoSuchElementException
        at java.util.Scanner.throwFor(Scanner.java:862)
        at java.util.Scanner.next(Scanner.java:1485)
        at java.util.Scanner.nextInt(Scanner.java:2117)
        at java.util.Scanner.nextInt(Scanner.java:2076)
        at Plates.main(Plates.java:17)
    
  • 代码

    import java.util.*;
    
    public class Plates {
    
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            //System.out.println("Enter Details");
            String s = in.next();
            int l = s.length();
            int n = s.charAt(0);
            int k = s.charAt(l - 1);
            int arr[][] = new int[n][2];
            for(int i = 0; i < n; i++) {
                for(int j = 0; j < 2; j++) {
                    arr[i][j] = in.nextInt();
                }
            }
            int max = 0;
            int inc[] = new int[n];
            int ded[] = new int[n];
            for(int t = 0; t < n; t++) {
                for(int p = 0; p < 2; p++) {
                    if(p == 0) {
                        inc[t] = arr[t][p];
                    } else if(p == 1) {
                        ded[t] = arr[t][p];
                    }
                }
            }
            int a, b;
            int sum = 0, loss = 0;
            for(a = 0; a < n; a++) {
                for(b = 1; b <= k; b++) {
                    sum = sum + inc[a + 1];
                    loss = loss - ded[a + 1];
                }
                if((sum - loss) > max) {
                    max = sum - loss;
                }
            }
            System.out.println(max);
        }
    }
    
    import java.util.*;
    公营车牌{
    公共静态void main(字符串[]args){
    扫描仪输入=新扫描仪(系统输入);
    //System.out.println(“输入详细信息”);
    字符串s=in.next();
    int l=s.长度();
    int n=s.charAt(0);
    int k=s.charAt(l-1);
    int arr[][]=新的int[n][2];
    对于(int i=0;i
  • 哈克朗克说:

    第一行包含两个空格分隔的整数,分别描述
    n
    (脏板数量)和
    k
    (哈罗德有时间清洗的板数量)的值

    • 1=n,完成了。现在,对于每个不能清洗的盘子,再减去
      p
      ,同时也减去
      d
      ,例如从总数中减去
      p+d

      然后,我们的目标是首先用最高的
      p+d
      值清洗盘子,因此我们将从总数中减去较小的值。为此,构建一个
      p+d
      值数组,对其进行排序,并清洗/移除/跳过具有最高值的
      k

      最后,记住不要返回负值

      这里是紧凑的形式:

      java.util.Scanner in = new java.util.Scanner(System.in);
      int n = in.nextInt(), k = in.nextInt(), pd[] = new int[n];
      long total = 0;
      for (int i = 0; i < n; i++) {
          int p = in.nextInt(), d = in.nextInt();
          total += p;
          pd[i] = p + d;
      }
      java.util.Arrays.sort(pd);
      for (int i = n - k - 1; i >= 0; i--)
          total -= pd[i];
      System.out.println(Math.max(0, total));
      
      java.util.Scanner-in=new java.util.Scanner(System.in);
      int n=in.nextInt(),k=in.nextInt(),pd[]=new int[n];
      长总计=0;
      对于(int i=0;i=0;i--)
      总计-=pd[i];
      System.out.println(数学最大值(0,总计));
      
      最好使用
      nextLine
      功能读取完整的行作为输入:

      String s = in.nextLine();
      

      然后根据空格拆分字符串。

      它正在编译。它在运行时失败。不确定发生了什么,但我认为堆栈跟踪在这一行
      arr[I][j]=in.nextInt()中明确指出了错误所在最好在源代码中指出,这是异常中提到的行。下一步是查看库方法的Javadocs,它抛出异常(在本例中为
      java.util.Scanner.nextInt
      ),以了解它抛出异常的原因。然后,如果您不理解它(虽然在本例中,文档中似乎已经足够清楚了…),您可能会问,当
      nextInt
      抛出
      noTouchElementException
      时,这意味着什么。在尝试在.nextInt()
      中执行
      之前,您应该检查集合中是否有其他元素(通常在(in.hasNextInt())
      作为迭代器,而不是循环的
      )。
      java.util.NoSuchElementException
      在运行时抛出,这就是代码编译的原因。
      int n = in.nextInt();
      int k = in.nextInt();
      
      java.util.Scanner in = new java.util.Scanner(System.in);
      int n = in.nextInt(), k = in.nextInt(), pd[] = new int[n];
      long total = 0;
      for (int i = 0; i < n; i++) {
          int p = in.nextInt(), d = in.nextInt();
          total += p;
          pd[i] = p + d;
      }
      java.util.Arrays.sort(pd);
      for (int i = n - k - 1; i >= 0; i--)
          total -= pd[i];
      System.out.println(Math.max(0, total));
      
      String s = in.nextLine();