在java中如何输入一个char型字符。

Python022

在java中如何输入一个char型字符。,第1张

可以创建Scanner类来从键盘输入一个字符,用String类型来接收,再使用String的charAt功能,具体步骤如下:

1、先创建一个Scanner对象,如:Scanner sc = new Scanner(System.in)

2、然后再调用Scanner对象sc的next()方法获取控制台输入,定义一个String类型的变量s来接收控制台输入的字符,如:String s = sc.next()

3、调取变量s的charAt(0)方法获取第一个字符,如:char c = s.charAt(0)

扩展资料

字符型值有如下三种表示形式

1、直接通过单个字符来指定字符型值,例如‘A’、‘9’和‘0’等。

2、通过转义字符表示特殊字符型值,例如‘\n’、‘\t’等。

3、直接使用Unicode值来表示字符型值,格式是‘\uXXXX’,其中XXXX代表一个十六进制的整数

字符型值也可以采用十六进制编码方式来表示,范围是‘\u0000’~‘\uFFFF’,一共可以表示65536个字符,其中前256个(‘\u0000’~‘\u00FF’)字符和ASCII码中的字符完全重合。

由于计算机底层保存字符时,实际是保存该字符对应的编号,因此char类型的值也可直接作为整型值来使用,它相当于一个16位的无符号整数,表数范围是0~65535。

如果把0~65535范围内的一个int整数赋给char类型变量,系统会自动把这个int整数当成char类型来处理。

参考资料:百度百科-char数据类型

最近的项目上需要限制EditText输入字符的类型,就把可以实现这个功能的方法整理了一下:

1、第一种方式是通过EditText的inputType来实现,可以通过xml或者Java文件来设置。假如我要设置为显示密码的形式,可以像下面这样设置:

在xml中, Android:inputType="textPassword"

在java文件中,可以用 myEditText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD)

当然,还有更多的其他属性用来进行输入设置。

2、第二种是通过android:digits 属性来设置,这种方式可以指出要显示的字符,比如我要限制只显示数字,可以这样:

android:digits="0123456789"

如果要显示的内容比较多,就比较麻烦了,将要显示的内容依次写在里面。

3、通过正则表达式来判断。下面的例子只允许显示字母、数字和汉字。

public static String stringFilter(String str)throws PatternSyntaxException{

// 只允许字母、数字和汉字

String regEx = "[^a-zA-Z0-9\u4E00-\u9FA5]"

Pattern p = Pattern.compile(regEx)

Matcher m = p.matcher(str)

return m.replaceAll("").trim()

}

然后需要在TextWatcher的onTextChanged()中调用这个函数,

@Override

public void onTextChanged(CharSequence ss, int start, int before, int count) {

String editable = editText.getText().toString()

String str = stringFilter(editable.toString())

if(!editable.equals(str)){

editText.setText(str)

//设置新的光标所在位置

editText.setSelection(str.length())

}

}

4、通过InputFilter来实现。

实现InputFilter过滤器,需要覆盖一个叫filter的方法。

public abstract CharSequence filter (

CharSequence source, //输入的文字

int start, //开始位置

int end, //结束位置

Spanned dest, //当前显示的内容

int dstart, //当前开始位置

int dend //当前结束位置

)

下面的实现使得EditText只接收字符(数字、字母和汉字)和“-”“_”,Character.isLetterOrDigit会把中文也当做Letter。

editText.setFilters(new InputFilter[] {

new InputFilter() {

public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart,

int dend) {

for (int i = starti <endi++) {

if ( !Character.isLetterOrDigit(source.charAt(i)) &&!Character.toString(source.charAt(i)) .equals("_") &&!Character.toString(source.charAt(i)) .equals("-"))

{

return ""

}

}

return null

} })

另外使用InputFilter还能限制输入的字符个数,如

EditText tv =newEditText(this)

int maxLength =10

InputFilter[] fArray =new InputFilter[1]

fArray[0]=new InputFilter.LengthFilter(maxLength)

tv.setFilters(fArray)

上面的代码可以限制输入的字符数最大为10。

常用的输入语句是:

输入字符串:new Scanner(System.in).next()

输入整数:new Scanner(System.in).nextInt()

输入小数:new Scanner(System.in).nextDouble();

常用的输出语句:

换行输出: System.out.println(变量或字符串)

非换行输出: System.out.print(变量或字符串)

换行输出错误提示(默认是红字):System.err.println(变量或字符串)

不换行输出错误提示(默认是红字): System.err.print(变量或字符串))