浙江大学PAT (Basic Level) Practice (中文)1009JAVA实现代码及分析

1009

说反话

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。

输出格式:

每个测试用例的输出占一行,输出倒序后的句子。

浙江大学PAT (Basic Level) Practice (中文)1009JAVA实现代码及分析我对这道题的理解是将输入的字符串以空格为间隔拆分开来,每个单词存入一个字符数组中,最后进行输出的时候将数组中的有效元素倒序输出。因为JAVA字符数组的默认值是\u0000,所以输出的时候要跳过这些无效字符。

具体代码实现如下:

import java.util.Scanner;
public class Main
{

    public static void main (String[]args) 
    {
    	char a[][]=new char[81][81];
    	char b[]=new char[81];
    	int j=0;//a的行坐标
    	int k=0;//a的列坐标
    	Scanner input=new Scanner(System.in);
    	String s=input.nextLine();//nextline()可以得到从键盘上输入的空格符号保存在字符串中,而不是遇到空格就停止输入
    	b=s.toCharArray();
    	for(int i=0;i<s.length();i++)
    	{
    		if(b[i]==' ')
    		{
    			j++;
    			i++;
    			k=0;
    		}
    		a[j][k]=b[i];
    		k++;
    	}
    	for(int i=j;i>-1;i--)
    	{
    		for(char item:a[i])
    		{
    			if(item=='\u0000')//'\u0000'为JAVA字符数组初始化时得到的值
    			{
    				break;
    			}
    			System.out.print(item);
    			
    		}
    		if(i>0)
    		{
    			System.out.print(" ");
    		}
    	}
    }
  
}