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<talk.length; 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] + "");
   } }
 }