亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

scanner讀取中文后異常

scanner讀取中文好像有問題?先輸入了“小夏”,到了輸年齡的時候輸了“20”,結果控制臺告訴我輸入的是"xiaoxxiaoxiaxix20",報了數字類型異常,如果輸英文的話沒有問題,這是怎么回事?

http://img1.sycdn.imooc.com//576116040001544213660768.jpg

正在回答

2 回答

重新啟動運行一下應該就好了,可能跟緩沖有關,鍵盤輸入有時會這樣

不行的話給代碼瞧瞧

0 回復 有任何疑惑可以回復我~
#1

大可無諧號 提問者

重啟了還是一樣,換了編碼方式試了也還是不行
2016-06-15 回復 有任何疑惑可以回復我~
#2

大可無諧號 提問者

非常感謝!
2016-06-16 回復 有任何疑惑可以回復我~
package com.imooc;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

//import com.imooc.action.GoddessAction;
//import com.imooc.model.Goddess;

public class View_test {

private static final String CONTEXT = "歡迎來到女神禁區: \n" + "下面是女神禁區的功能列表: \n"
+ "[MAIN/M]:主菜單 \n" + "[QUERY/Q]:查看全部女神的信息 \n"
+ "[GET/G]:查看某位女神的詳細信息 \n" + "[ADD/A]:添加女神信息 \n"
+ "[UPDATE/U]:更新女神信息 \n" + "[DELETE/D]:刪除女神信息 \n"
+ "[SERCH/S]:查詢女神信息(根據姓名、手機號來查詢) \n" + "[EXIT/E]:退出女神禁區 \n"
+ "[BREAK/B]:退出當前功能,返回主菜單";

private static final String OPERATION_MAIN = "MAIN";
private static final String OPERATION_QUERY = "QUERY";
private static final String OPERATION_GET = "GET";
private static final String OPERATION_ADD = "ADD";
private static final String OPERATION_UPDATE = "UPDATE";
private static final String OPERATION_DELETE = "DELETE";
private static final String OPERATION_SEARCH = "SEARCH";
private static final String OPERATION_EXIT = "EXIT";
private static final String OPERATION_BREAK = "BREAK";

public static void main(String[] args) {

System.out.println(CONTEXT);

Scanner scan = new Scanner(System.in);
// Goddess goddess = new Goddess();
// GoddessAction action = new GoddessAction();
String previous = null;
Integer step = 1;
// 怎么保持程序一直運行
while (scan.hasNext()) {
String in = scan.next().toString();
if (OPERATION_EXIT.equals(in.toUpperCase())
|| OPERATION_EXIT.substring(0, 1).equals(in.toUpperCase())) {
System.out.println("您已成功退出女神禁區!");
break;
}else if (OPERATION_ADD.equals(in.toUpperCase())
|| OPERATION_ADD.substring(0, 1).equals(in.toUpperCase())
|| OPERATION_ADD.equals(previous)) {
previous = OPERATION_ADD;
//新增女神
if(1 == step) {
System.out.println("請輸入女神的[姓名]:");
}else if(2 == step) {
System.out.println("您輸入的值為:" + in);
// goddess.setUser_name(in);
System.out.println("請輸入女神的[年齡]:");
}else if(3 == step) {
System.out.println("您輸入的值為:" + in);
// goddess.setAge(Integer.valueOf(in));
System.out.println("請輸入女神的[生日],格式如yyyy-MM-dd");
}else if(4 == step) {
System.out.println("您輸入的值為:" + in);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthday = null;
try {
birthday = sdf.parse(in);
// goddess.setBirthday(birthday);
System.out.println("請輸入女神的[郵箱]");
} catch (ParseException e) {
e.printStackTrace();
System.out.println("您輸入的格式有誤,請重新輸入:");
step = 3;
}
}else if(5 == step) {
// goddess.setEmail(in);
System.out.println("請輸入女神的[手機號]");
}else if(6 == step) {
// goddess.setMobile(in);

try {
// action.add(goddess);
System.out.println("新增女神成功!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("新增女神失敗!");
}
}
if(OPERATION_ADD.equals(previous)) {
step++;
}
}else {
System.out.println("您輸入的值為:" + in);
}



}

}

}


1 回復 有任何疑惑可以回復我~
#1

3114002661

我測試了一下,只要每次將光標移到最后一行再輸入就沒有問題,控制臺的很多時候會這樣
2016-06-15 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JDBC之 “ 對岸的女孩看過來”
  • 參與學習       99329    人
  • 解答問題       916    個

一起領略JDBC的奧秘,為進一步學習集成框架打下良好的基礎

進入課程

scanner讀取中文后異常

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號