我正在使用UVA 11877 Coca Cola,这是我的代码:
import java.util.Scanner;
class Main{
private static Scanner sc;
public static void main(String[] args) {
int j;
Scanner st = new Scanner(System.in);
int cs = st.nextInt();
int a = 0;
int temp = 0;
while (a < cs) {
int i = st.nextInt();
j = freeBottle(i);
a++;
free = 0;
System.out.println(j);
}
}
static int free;
static int freeBottle(int i) {
int temp = 0;
while (i >= 3) {
temp++;
i = i - 3;
}
free = free + temp;
int p = temp + i;
if (p > 2) {
freeBottle((temp + i));
}
if (p == 2) {
free++;
}
return free;
}
}
当我在UVA上提交它时,它总是返回
RuntimeError
,在ideone.com上也失败。但是我在Eclipse中没有任何错误。问题是什么?我在提交中也看到了其他问题。
最佳答案
让我们从一些基本的健康检查开始。当我针对示例输入运行您的代码时,我得到了错误的答案:
// Your code
Scanner st = new Scanner("3\n10\n81\n0");
// Your code
5
40
0
在Eclipse中运行代码时,您是否看到正确的答案(
1
,5
,40
)?我怀疑不是-至少不是您发布的代码。从外观上看,您期望第一行是随后的结果数,这是不正确的。问题说输入内容包括:
最多10个测试用例,每个测试用例包含一行带有整数
n
(1 <= n <= 100
)的行。输入以n = 0
结尾,不应对其进行处理。因此,作为第一步,我建议仔细检查您是否正确读取了输入,并查看了示例输入的预期输出。从那里开始,使用符合上述描述的其他输入进行试验,例如单个
1
(后接0
)和十个100
。为了使您入门,这是一个可以正确读取输入的循环(请注意,您应该使用try-with-resources的用法):
try(Scanner in = new Scanner(System.in)) {
while(in.hasNextInt()) {
int bottles = in.nextInt();
if(bottles == 0) {
break;
}
// process bottles
}
}