java中控制台输入,Java中读取控制台的用户输入

1、简单的获取用户输入

下面是一个基本的例子,包含解释:

importjava.io.BufferedReader;

importjava.io.InputStreamReader;

importjava.io.IOException;

publicclassBasicInput{

publicstaticvoidmain(String[]args){

try{

//在Java当中,用户输入要通过InputStream(输入流)来获取。

//System.in就是系统的输入流。缺省情况下这个输入流连接到控制台(命令行)。

//InputStreamReader就是用来读取InputStream的类。

InputStreamReaderis_reader=newInputStreamReader(System.in);

//通常使用BufferedReader来读取InputStream中的字符串内容。

//BufferedReader可以一次读取一行。

Stringstr=newBufferedReader(is_reader).readLine();

//将读取的字符串输出到屏幕上。

System.out.println("您输入的是:"+str);

}catch(IOExceptione){

e.printStackTrace();

}

}

}

看起来不少,实际上只有三行。下面将前面两行提取出来,放到单独的方法中,就成了下面这个样子(前面的 import 我就省掉了):

publicclassBasicInput{

publicstaticvoidmain(String[]args){

try{

Stringstr=readUserInput();

System.out.println("您输入的是:"+str);

}catch(IOExceptione){

e.printStackTrace();

}

}

/**

*读取用户输入

*

*@return用户输入

*@throwsIOException如果读取失败

*/

privatestaticStringreadUserInput()throwsIOException{

InputStreamReaderis_reader=newInputStreamReader(System.in);

returnnewBufferedReader(is_reader).readLine();

}

}

2、在读取之前显示提示文本

有时候需要在读取前显示一段文字。下面是继续改造后的例子:

publicclassBasicInput{

publicstaticvoidmain(String[]args){

try{

//先提示一段文字,然后等待用户输入

Stringstr=readUserInput("请输入您的年龄:");

System.out.println("您输入的是:"+str);

}catch(IOExceptione){

e.printStackTrace();

}

}

/**

*读取用户输入

*

*@paramprompt提示文字

*@return用户输入

*@throwsIOException如果读取失败

*/

privatestaticStringreadUserInput(Stringprompt)throwsIOException{

//输出提示文字

System.out.print(prompt);

InputStreamReaderis_reader=newInputStreamReader(System.in);

returnnewBufferedReader(is_reader).readLine();

}

}

3、不允许用户输入为空

这就要用到 while 循环,当用户输入为空(没有输入就直接回车)的时候重新要求输入。下面是将 readUserInput 方法改造后的例子:

/**

*读取用户输入

*

*@paramprompt提示文字

*@return用户输入

*@throwsIOException如果读取失败

*/

privatestaticStringreadUserInput(Stringprompt)throwsIOException{

//先定义接受用户输入的变量

Stringresult;

do{

//输出提示文字

System.out.print(prompt);

InputStreamReaderis_reader=newInputStreamReader(System.in);

result=newBufferedReader(is_reader).readLine();

}while(result.equals(""));//当用户输入为空的时候,反复提示要求用户输入

returnresult;

}

为了更加灵活的判断,我们将 while 中的判断语句提取成一个单独的方法。然后整个代码变成这样:

publicclassBasicInput{

publicstaticvoidmain(String[]args){

try{

//先提示一段文字,然后等待用户输入

Stringstr=readUserInput("请输入您的年龄:");

System.out.println("您输入的是:"+str);

}catch(IOExceptione){

e.printStackTrace();

}

}

/**

*读取用户输入

*

*@paramprompt提示文字

*@return用户输入

*@throwsIOException如果读取失败

*/

privatestaticStringreadUserInput(Stringprompt)throwsIOException{

//先定义接受用户输入的变量

Stringresult;

do{

//输出提示文字

System.out.print(prompt);

InputStreamReaderis_reader=newInputStreamReader(System.in);

result=newBufferedReader(is_reader).readLine();

}while(isInvalid(result));//当用户输入无效的时候,反复提示要求用户输入

returnresult;

}

/**

*检查用户输入的内容是否无效

*

*@paramstr用户输入的内容

*@return如果用户输入的内容无效,则返回true

*/

privatestaticbooleanisInvalid(Stringstr){

returnstr.equals("");

}

}

4、只允许用户输入数字

本例要求的是输入用户年龄。这是一个整数。为了避免得到非法的值,我们需要进一步对内容进行判断。因为之前我们将内容判断这一步单独提取出来,所以我们只要修改 isInvalid 方法就行了。判断一个字符串是不是数字,用正则表达式是最简单的。下面是修改后的 isInvalid 方法:

privatestaticbooleanisInvalid(Stringstr){

returnstr.equals("")||!str.matches("d+");

}

str.matches("d+") 用来判断字符串是不是全是数字。

到这里纵观整个代码,可以看得出来,Java 虽然在某些地方复杂,但只要稍加整理,我们仍然可以得到逻辑结构合理的代码。

package com.AlexanderFaith.MyStringOrder;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.Scanner;

public class MyStringOrder {

public static void main(String[] args) {

//6

Scanner input = new Scanner(System.in);

String talk[] = new String[5];

System.out.println("请输入5句话");

for(int i=0; i

System.out.println("第" + (i+1) + "句话:");

talk[i] = input.next();

}

//Arrays.sort(talk);

System.out.println("逆序输出5句话");

for(int i=talk.length-1; i>=0; i--) {

System.out.println(talk[i]);

}

//5Sentence

try {

System.out

.println("Write down 5 sentences:");

String strs[]=new String [5];

String str;

int i=0;

do {

System.out.print("The "+(i+1)+"Sentence:");

InputStreamReader is_reader = new InputStreamReader(System.in);

str = new BufferedReader(is_reader).readLine();

strs[i]=str;

++i;

} while (i<5);

for(i=4;i>=0;i--){

System.out.print("The "+(i+1)+"Sentence:");

System.out.println(strs[i]);

}

} catch (IOException e) {

e.printStackTrace();

}

//1,With StringBuilder

String str1="Java hurts my head";

StringBuilder builder = new StringBuilder(str1);

str1 = builder.reverse().toString();

System.out.println(str1);

//333

Scanner in = new Scanner(System.in);

StringBuffer s = new StringBuffer(in.next());

s.reverse();

System.out.println(s.toString());

//2,With For

try {

String str;

do {

System.out

.println("Write down something about your real life:");

InputStreamReader is_reader = new InputStreamReader(System.in);

str = new BufferedReader(is_reader).readLine();

} while (str.equals(""));

System.out.println("The Sentence you write is: " + str);

System.out.println("And after reverse it: ");

reverseSentence(str);

System.out.println();

reverseSecond(str);

} catch (IOException e) {

e.printStackTrace();

}

}

private static void reverseSecond(String str) {

// TODO Auto-generated method stub

String[] s = str.split(" ");

for (int i = s.length - 1; i >= 0; i--) {

System.out.print(s[i] + " ");

}

}

public static void reverseSentence(String sentence) {

String[] s = sentence.split("");

for (int i = s.length - 1; i >= 0; i--) {

System.out.print(s[i] + "");

}

} }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值