比如我想要用户输入int型变量,但是用户输入的是字符串,这时候会跳出inputmismatch异常,如何实现避免这种异常并提示用户重新输入,感谢
javaä¸å®ç°ç¨æ·è¾å ¥æ ¼å¼é误åï¼æ示ç¨æ·éæ°è¾å ¥ï¼ä»¥ç¨æ·è¾å ¥è´æ°çæ¶åæ示é误并éæ°è¾å ¥æ¡ä¾ä¸ºä¾ï¼ä»£ç å¦ä¸ï¼
public static int a = 0;public static void main(String[] args) {
while (true) {
try {
a = getStr();
if (-1 == a) {
//ç¨æ·è¾å ¥è´æ°æ¶åï¼æéç¨æ·è¾å ¥æ£ç¡®çæ ¼å¼ã
throw new IO Except io n("请è¾å ¥å¤§äº-1çæ°");
}else{
break;
}
}
// è¿ä¸ªå°æ¹å®ç°IOå¼å¸¸æå
catch (IOException e) {
//æåä¸é¢æ示çé误ï¼å¦æä¸é¢æ¥éï¼è¯æç¨æ·è¾å ¥æ ¼å¼ä¸ç¬¦åï¼è¿éå®ç°éæ°è¾å ¥ã
System.out.println("erro is a,请ä»æ°è¾å ¥ï¼");
}
}
System.out.print(a);
Test.prints();
a = a + 0;
}
public static int getStr(){
//è·åç¨æ·è¾å ¥çæ£ç¡®æ°å¼
Scanner input = new Scanner(System.in);
a = input.nextInt();
return a;
}
public static void prints() {
//æç¨æ·è¾å ¥çæ°å¼æ¾ç¤ºåºæ¥
System.out.println(a);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2012-02-02
main主函数这样写,就可以实现你的想法:
public static void main(String[] args) {
boolean isError = true;
while (isError) {
try {
Scanner input = new Scanner(System.in);
int a = input.nextInt();
isError = false;
} catch (Exception e) {
System.out.println("您的输入有误,请输入数字:");
}
}
}
public static void main(String[] args) {
boolean isError = true;
while (isError) {
try {
Scanner input = new Scanner(System.in);
int a = input.nextInt();
isError = false;
} catch (Exception e) {
System.out.println("您的输入有误,请输入数字:");
}
}
}
第2个回答 推荐于2016-12-02
从界面上获得用户输入的数据只会是字符串类型的,你在servlet中用getParameter方法获得了用户的数据,例子如下:
String userName=request.getParameter("name值");
这样,你就得到了字符串类型的用户数据:userName ,接下来:
int userName1=new Integer(userName);
这样的话,用户输入的数据就会变成int类型的。
你描述的不清楚也没有代码,我只能推测到这一点。追问
String userName=request.getParameter("name值");
这样,你就得到了字符串类型的用户数据:userName ,接下来:
int userName1=new Integer(userName);
这样的话,用户输入的数据就会变成int类型的。
你描述的不清楚也没有代码,我只能推测到这一点。追问
我设置一个扫描器接收int型变量
比如
Scanner input = new Scanner(System.in);
int a = input.nextInt();
如果用户输入一个字符串 比如“SS”就会报错 这样子 请问怎么解决,并提示用户再次输入正确格式而且接收,知道输入正确格式为止
你这是新建了一个监听器,而且已经规定了用户只能输入整型的数据,那用户输入其他类型的当然不行了,
Scanner input=new Scanner(System.in);
String a=input.next();
这样就可以输入字符串类型的内容了,
第3个回答 2012-02-04
一般都是用js去判断,
var str = "0123456789";
var userinput= document.getElementById(" ");
var j;
for (int i = 0; i < str.length(); i ++) {
j=userinput.indexof(str.charat(i))
if(j==-1)
{ alert("请输入数字类型!");
return false;}
}
return true;
大概就是这样,你自己再完善一下
var str = "0123456789";
var userinput= document.getElementById(" ");
var j;
for (int i = 0; i < str.length(); i ++) {
j=userinput.indexof(str.charat(i))
if(j==-1)
{ alert("请输入数字类型!");
return false;}
}
return true;
大概就是这样,你自己再完善一下
第4个回答 2012-09-27
import java.awt.HeadlessException;import java.util.Arrays;
import javax.swing.JOptionPane;
public class exam1 {
public static void main(String[] args) {
dialogs();
}
public static int sum(int arr[]) {
int x = 0;
for (int i = 0; i < arr.length; i++) {
x += arr[i];
}
return x;
}
public static double average(int arr[]) {
return (double) sum(arr) / arr.length;
}
public static int smallest(int arr[]) {
Arrays.sort(arr);
return arr[0];
}
public static int largest(int arr[]) {
Arrays.sort(arr);
return arr[arr.length - 1];
}
public static void dialogs() {
JOptionPane jp = new JOptionPane();
boolean flag = true;
while (flag) {
try {
int num = Integer
.parseInt(JOptionPane
.showInputDialog("How many numbers do you want to calculate?"));
int numArr[] = new int[num];
flag = false;
try {
for (int i = 0; i < num; i++) {
numArr[i] = Integer
.parseInt(JOptionPane
.showInputDialog("please input num"
+ (i + 1)));
}
JOptionPane.showMessageDialog(jp, "Sum=" + sum(numArr)
+ "\r\nAverage=" + average(numArr)
+ "\r\nSmallest=" + smallest(numArr)
+ "\r\nLargest=" + largest(numArr));
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(jp, "NumberFormatException");
} catch (HeadlessException e) {
JOptionPane.showMessageDialog(jp, "HeadlessException");
}
} catch (Exception e) {
JOptionPane.showMessageDialog(jp, "NUM ERROR! AGAIN");
}
}
}
}
import javax.swing.JOptionPane;
public class exam1 {
public static void main(String[] args) {
dialogs();
}
public static int sum(int arr[]) {
int x = 0;
for (int i = 0; i < arr.length; i++) {
x += arr[i];
}
return x;
}
public static double average(int arr[]) {
return (double) sum(arr) / arr.length;
}
public static int smallest(int arr[]) {
Arrays.sort(arr);
return arr[0];
}
public static int largest(int arr[]) {
Arrays.sort(arr);
return arr[arr.length - 1];
}
public static void dialogs() {
JOptionPane jp = new JOptionPane();
boolean flag = true;
while (flag) {
try {
int num = Integer
.parseInt(JOptionPane
.showInputDialog("How many numbers do you want to calculate?"));
int numArr[] = new int[num];
flag = false;
try {
for (int i = 0; i < num; i++) {
numArr[i] = Integer
.parseInt(JOptionPane
.showInputDialog("please input num"
+ (i + 1)));
}
JOptionPane.showMessageDialog(jp, "Sum=" + sum(numArr)
+ "\r\nAverage=" + average(numArr)
+ "\r\nSmallest=" + smallest(numArr)
+ "\r\nLargest=" + largest(numArr));
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(jp, "NumberFormatException");
} catch (HeadlessException e) {
JOptionPane.showMessageDialog(jp, "HeadlessException");
}
} catch (Exception e) {
JOptionPane.showMessageDialog(jp, "NUM ERROR! AGAIN");
}
}
}
}