在scanner中char型的输入规则

Scanner输入函数的Char型输入规则

我们平时输入的基本数据类型,比如整形int,浮点型float,双精度浮点型double,它们都有统一的输入格式:

Scanner input = new Scanner(System.in);

int firstnumber = input.nextInt(); //整形int型

double money = input.nextDouble(); //双精度浮点型double型

float money = input.nextFloat(); //浮点型float型

这里还有一个不是基本数据类型,但是格式是跟上面的格式大同小异的,那就是String字符串类型,它的格式为:

String money = input.next();

因为以上都是同一的输入格式,所以不易忘记,但是基本类型中有个字符型char型 却不是按照这样的规则的,如果按照以上格式编写的话,编译器会报错,此时可以有两种方法解决,第一种就是利用强制类型转换,因为int类型是包含char类型的,如果想要获得char型。可以这么写:
int firstnumber = input.nextInt();
char change = (char)int;
这样就相当于输入了字符型数据。

第二种方法的输入规则为:

char money = input.next().charAt(0);

#范例:

利用switch_case可以很清晰的解释:

Scanner input = new Scanner(System.in);
char c = input.next().charAt(0);
int a = 10,b = 20;
switch(c){
  case '+':
  		System.out.println(a + b);
  		break;
  case '-':
  		System.out.println(a - b);
  		break;
  default:
  		break;
}
编写一个Java应用程序,在主线程中再创建两个线程,一个线程负责给出键盘上字母键上的字母,另一个线程负责让用户在命令行输入所给出的字母。 代码如下: TypeKey.java public class TypeKey { public static void main(String args[]) { System.out.println("键盘练习(输入#结束程序)"); System.out.printf("输入显示的字母(回车)\n"); Letter letter; letter = new Letter(); GiveLetterThread giveChar; InuptLetterThread typeChar; giveChar =new GiveLetterThread(); giveChar.setLetter(letter); giveChar.setSleepLength(3200); typeChar = new InuptLetterThread(); typeChar.setLetter(letter); giveChar.start(); typeChar.start(); } } Letter.java public class Letter { char c ='\0'; public void setChar(char c) { this.c = c; } public char getChar() { return c; } } GiveLetterThread.java public class GiveLetterThread extends Thread { Letter letter; char startChar ='a',endChar = 'z'; int sleepLength = 5000; public void setLetter(Letter letter) { this.letter = letter; } public void setSleepLength(int n){ sleepLength = n; } public void run() { char c = startChar; while(true) { letter.setChar(c); System.out.printf("显示的字符:%c\n ",letter.getChar()); try{ Thread.sleep(sleepLength); //【代码1】//调用sleep方法使得线程中断sleepLength豪秒 } catch(InterruptedException e){} c = (char)(c+1); if(c>endChar) c = startChar; } } } InuptLetterThread.java import java.awt.*; import java.util.Scanner; public class InuptLetterThread extends Thread { Scanner reader; Letter letter; int score = 0; InuptLetterThread() { reader = new Scanner(System.in); } public void setLetter(Letter letter) { this.letter = letter; } public void run() { while(true) { //System.out.printf("输入显示的字母(回车)\n"); String str = reader.nextLine(); char c = str.charAt(0); if(c==letter.getChar()) { score++; System.out.printf("\t\t输入对了,目前分数%d\n",score); } else { System.out.printf("\t\t输入错了,目前分数%d\n",score); } if(c=='#') System.exit(0); } } } 将上述代码一补全,并输出实验结果
最新发布
05-10
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值