昨天做了一个关于循环输入的题,因为用到了Scanner sc = new Scanner(System.in);int n = sc.nextInt();我在电脑自己的eclipse上运行没有问题,但是我提交的时候总是会出问题,而且不止一个题,所有的循环输入都是同样的问题,提示错误信息百度上说的都是我用了sc.close
我先说说是什么题:母牛生小母牛,第四年开始小母牛可以开始生小母牛,要求输入一组数据,表示年份,输出那个年份的总牛数,(为了怕直接粘贴我的代码我将第一年设置成了两头牛,就是第一年就开始生牛)显然各位请看代码:
package jabari;
import java.util.Scanner;
public class T_2 {
public static void main(String[] args) {
int result[] = new int[100];
int n, k = 0, w = 0;
do {
int x = 1, y = 0, z = 1;
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
if (n != 0) {
for (int v = 0; v < n; v++) {
result[w] = x + y + z;
int u = z;
z = x;
x = x + y;
y = u;
}
w++;
}
} while (n != 0);
for (int i = 0; i < w; i++)
System.out.println(result[i]);
}
}
调试是不会有问题的,而且结果也对,但是为什么提交的时候就是会出问题,我在这里附上另一种方法,我以为是方法错了
package jabari;
import java.util.Scanner;
public class T_2 {
public static void main(String[] args) {
int a[] = new int[100];
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
a[4] = 6;
int b[] = new int[100];
int n, k = 0;
do {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
if (n != 0) {
if (n > 4) {
for (int i = 4; i < n; i++) {
a[i] = a[i - 1] + a[i - 3];
b[k] = a[i];
}
System.out.println(b[k]);
} else {
b[k] = a[n - 1];
System.out.println(b[k]);
}
}
k++;
} while (n > 0 || n < 55);
}
}
看结果:
然而这样也是有问题的,有人会说我的输入方式不对,不是这样输入的,但是我对上面的两个程序都做了小的改动,结果提交都成功了,而且正确,你看我的while循环题里面的条件:
package jabari;
import java.util.Scanner;
public class T_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a[] = new int[100];
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
a[4] = 6;
int b = 0;
int n;
do {
n = sc.nextInt();
if (n != 0) {
if (n > 4) {
for (int i = 4; i < n; i++) {
a[i] = a[i - 1] + a[i - 3];
b = a[i];
}
System.out.println(b);
} else {
b = a[n - 1];
System.out.println(b);
}
}
} while (sc.hasNext());
}
}
结果一模一样,提交也会成功,那就是因为我将循环体while里面的条件改成了sc.hasNext();其实就折磨简单,但是对于初学者来说很难想出来,不要死磕,多次循环输入一定要加sc.hasNext()循环体,显然上面你也看出来了我写的两个循环体都可以,但是提交不成功。
原谅我很菜,这个问题可是让我想了半天,哈哈!!