我正在处理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中没有任何错误。有什么问题?
我在其他问题的提交中也看到了这个问题。
答案 0 :(得分:3)
让我们从一些基本的健全性检查开始。当我针对示例输入运行代码时,我得到了错误的答案:
// 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
)和10个100
。
为了帮助您入门,这里有一个能够正确读取输入的循环(请注意您应该使用的try-with-resources的使用):
try(Scanner in = new Scanner(System.in)) {
while(in.hasNextInt()) {
int bottles = in.nextInt();
if(bottles == 0) {
break;
}
// process bottles
}
}