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
时,这意味着什么。在尝试在.nextInt()noTouchElementException
作为迭代器,而不是循环的之前,您应该检查集合中是否有其他元素(通常在(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();