Scanner input=new Scanner(System.in);
for(int i=1;i<=10;i++){
System.out.println("请输入第"+i+"个数据");
try{input.nextInt();}catch (InputMismatchException e) {
}
}
下面是控制台结果
请输入第1个数据
1
请输入第2个数据
2
请输入第3个数据
a
请输入第4个数据
请输入第5个数据
请输入第6个数据
请输入第7个数据
请输入第8个数据
请输入第9个数据
请输入第10个数据我想让他一个输入错误后可以继续重复输入数据,而不是结束,也不要再从头开始.
但是Java却不会执行try里的语句了.
我想到的办法是重载一个方法,然后递归调用.代码如下
int[] inPut(){
int[] temp=new int [10];
Scanner input=new Scanner(System.in);
for(int i=1;i<=10;i++){
try{System.out.print("请输入第"+i+"个数据:");
temp[i-1]=input.nextInt();
}catch (InputMismatchException e) {
temp=JiSuan.inPut(temp,i);
break;
}
}
return temp;
}
static int[] inPut(int [] temp,int i){
int[] yctemp=new int[10];
Scanner input=new Scanner(System.in);
for(;i<=10;i++){
try{System.out.println("请输入第"+i+"个数据");
yctemp[i-1]=input.nextInt();
}catch (InputMismatchException e) {
yctemp=JiSuan.inPut(temp,i);
break;
}
}
return yctemp;
}
但是这样感觉写感觉如果递归次数过多,就是一直输错,可能会栈溢出,也不如用循环写漂亮.
java有没有方法cath完之后可以执行try的方法,如果可以的话,代码就可以写成
Scanner input=new Scanner(System.in);
for(int i=1;i<=10;i++){
System.out.println("请输入第"+i+"个数据");
try{input.nextInt();}catch (InputMismatchException e) {
i--;
continue;
}
}
可以简单很多.
那么Java到底有没有办法执行try中的语句,或者有什么更好的更简单的实现方法.
for(int i=1;i<=10;i++){
System.out.println("请输入第"+i+"个数据");
try{input.nextInt();}catch (InputMismatchException e) {
}
}
下面是控制台结果
请输入第1个数据
1
请输入第2个数据
2
请输入第3个数据
a
请输入第4个数据
请输入第5个数据
请输入第6个数据
请输入第7个数据
请输入第8个数据
请输入第9个数据
请输入第10个数据我想让他一个输入错误后可以继续重复输入数据,而不是结束,也不要再从头开始.
但是Java却不会执行try里的语句了.
我想到的办法是重载一个方法,然后递归调用.代码如下
int[] inPut(){
int[] temp=new int [10];
Scanner input=new Scanner(System.in);
for(int i=1;i<=10;i++){
try{System.out.print("请输入第"+i+"个数据:");
temp[i-1]=input.nextInt();
}catch (InputMismatchException e) {
temp=JiSuan.inPut(temp,i);
break;
}
}
return temp;
}
static int[] inPut(int [] temp,int i){
int[] yctemp=new int[10];
Scanner input=new Scanner(System.in);
for(;i<=10;i++){
try{System.out.println("请输入第"+i+"个数据");
yctemp[i-1]=input.nextInt();
}catch (InputMismatchException e) {
yctemp=JiSuan.inPut(temp,i);
break;
}
}
return yctemp;
}
但是这样感觉写感觉如果递归次数过多,就是一直输错,可能会栈溢出,也不如用循环写漂亮.
java有没有方法cath完之后可以执行try的方法,如果可以的话,代码就可以写成
Scanner input=new Scanner(System.in);
for(int i=1;i<=10;i++){
System.out.println("请输入第"+i+"个数据");
try{input.nextInt();}catch (InputMismatchException e) {
i--;
continue;
}
}
可以简单很多.
那么Java到底有没有办法执行try中的语句,或者有什么更好的更简单的实现方法.
解决方案 »
- 想卸载JDK,提示安装时发生严重错误,无法卸载,试着重新安装,提示已经安装相同版本;不知道大家碰到过这个情况没,怎么解决的?
- 求一算法~
- 在applet中如何改变html的背景颜色
- java2d 怎么实现 mask color功能(即 指定透明色)
- java 解压缩 .tar.Z文件
- 连接池优惠问题.大家来讨论
- 关于JNI技术使用C的动态连接库
- 请问如何使用policytool?
- Java Bean +JDBC-ODBC桥+Ms SqlServer7.0中文输入出错!
- freemarker获取模板
- SSM框架 service的实现类
- 多个数组之间的排列组合形成一个大数组,如何解决新数组过大的问题
int flag=1;//记录发生错误的小标
int count=0;//成功的次数
int falut=0;//错误的次数
public void test() {
for (int i =flag; i <=10; i++) {
if(count+falut==10){
break;
}
System.out.println("输入第"+i+"个数据");
try {
this.myScanner.nextInt();
count++;
} catch (Exception e) {
System.out.println("输入错误,请输入正确的数值!!!");
falut++;
this.myScanner.next();
flag=i+1;
this.test();
}
}
}
public static void main(String[] args) {
Demo demo=new Demo();
demo.test();
}
}
import java.util.Scanner;public class ScannerTest {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
for(int i=1;i<=10;i++){
System.out.println("请输入第"+i+"个数");
try{
input.nextInt();
}catch(InputMismatchException e){
i--;
input.next();//把错误的数据读取
}
}
}
}
你这样试一下
试运行结果
请输入第1个数
s
请输入第1个数
sd
请输入第1个数
d
请输入第1个数
4
请输入第2个数
f
请输入第2个数
g
请输入第2个数
4
请输入第3个数
int[] inPut(){
int[] temp=new int [10];
Scanner input=new Scanner(System.in);
int x = 0;
boolean flag = false;
for(int i=1;i<=10;i++){
try{
System.out.println("请输入第"+i+"个数据");
input = new Scanner(System.in);
x=input.nextInt();
flag = true;
}catch(Exception e){
flag = false;
System.out.println("输入有误请重新输入");
i--;
}finally{
if(flag){//输入有效则加入数组
temp[i-1] = x;
}
}
}
System.out.println("--------");
for(int i : temp){
System.out.println(i);
}
return temp;
}应该能满足你的需求
public int[] inPut(){
int [] array = new int [10];
for (int i=0;i<array.length;i++){
try {
System.out.println("输入数据"+(i+1));
array[i] = this.getIn();
}catch (Exception e){
System.out.println("数据错误!");
i--;
}
}
return array;
}
public static void main(String[] args) {
Test demo=new Test();
demo.inPut();
} public int getIn() throws Exception{
Scanner input=new Scanner(System.in);
int x = 0;
x = input.nextInt();
return x;
}
}
感觉可以不需要标记直接使用try catch