关于java编程的问题,有关Scanner
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于java编程的问题,有关Scanner相关的知识,希望对你有一定的参考价值。
源代码:
int r;
Scanner jin = new Scanner(System.in);
while (true)
try
r = jin.nextInt();
break;
catch (Exception e)
System.out.println("非法输入,请重新输入:");
该段代码的原意是输入一个整数,如果输入不合法,则重复输入过程直到输入正确。
但是,实际运行则是,一旦输入异常则直接死循环。
求解释并给出解决方案(使用scanner,并在原有代码上修改)。
加了一条打印语句,Exception里加了个next
import java.util.Scanner;public class MyTest
public static void main(String[] args)
int r;
Scanner jin = new Scanner(System.in);
while (true)
try
r = jin.nextInt();
System.out.println("r = " + r);
break;
catch (Exception e)
System.out.println("非法输入,请重新输入:");
jin.next();
在eclipse 运行结果如下
根据我刚才试验的,可能是因为scanner缓存中始终存在异常没有清空导致的死循环,两种方法建议:
将Scanner jin = new Scanner(System.in)块移入try块第一行;
清空错误缓存,在catch块中增加jin.nextLine();这一句
import java.util.Scanner;
public class Test
public static void main(String[] args)
int r;
Scanner jin = new Scanner(System.in);
boolean flag = false;
while (true)
try
if(flag)
jin.nextLine();
//System.out.println(jin.nextLine());
r = jin.nextInt();
break;
catch (Exception e)
System.out.println("非法输入,请重新输入:");
flag = true;
java中有关类数组定义问题
package ahaAlgorithm.chapter1; import java.util.Scanner; /** * * @Title: BubbleSort1.java * @Package ahaAlgorithm.chapter1 * @Description: TODO(类在排序中的应用) * @author YoungSone * @date 2020年7月29日 上午10:03:09 * @version V1.0 */ public class BubbleSort1 { private static Scanner in; public static void main(String[] args) { Student t = new Student(); int i, j, n, score; String name; in = new Scanner(System.in); System.out.println("有多少人参加?"); n = in.nextInt(); Student[] student = new Student[n];//定义Student类数组 for (i = 0; i < n; i++) { student[i]=new Student(); //new Student类 student[i].setName(in.next()); student[i].setScore(in.nextInt()); } for (i = 0; i < n - 1; i++) { for (j = 0; j < n - 1 - i; j++) { if (student[j].getScore() > student[j + 1].getScore()) { t = student[j]; student[j] = student[j + 1]; student[j + 1] = t; } } } for (Student s : student) { System.out.println(s.getName() + " " + s.getScore()); } } } class Student{ private String name; private int score; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } }
java中关于类数组要进行两次new定义
Student student =new Student[n] //声明student数组
sutdent[i]=new student()//声明 student(i)为一个新的类student
第一次定义:
student[1] | student[n] |
第二次定义
student[1] student[n]
student类 变量 score 和 name |
student类 |
以上是关于关于java编程的问题,有关Scanner的主要内容,如果未能解决你的问题,请参考以下文章