L1-023 输出GPLT(Java)

L1-023 输出GPLT(Java)及快速输入

给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT…这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。

输入格式:

输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。

输出格式:

在一行中按题目要求输出排序后的字符串。题目保证输出非空。

输入样例:

pcTclnGloRgLrtLhgljkLhGFauPewSKgt

输出样例:

GPLTGPLTGLTGLGLL

解题

重点在于按照“GPLT”顺序的输出。利用“toUpperCase()“” 方法用于把字符串全部转换为大写,然后先遍历字符串记录每个字符的个数后依次输出。
代码如下:

import java.io.*;
public class Main {
	 public static void main(String[] args) throws Exception{
	        BufferedReader bu = new BufferedReader(new InputStreamReader(System.in));
	        String str = bu.readLine().toUpperCase();
	        int G = 0,P=0,L=0,T=0; 
	        for(int i=0; i<str.length(); i++) { 
	            if(str.charAt(i) == 'G') {
	                G++;
	            } else if (str.charAt(i) == 'P') {
	                P++;
	            } else if (str.charAt(i) == 'L') {
	                L++;
	            } else if (str.charAt(i) == 'T') {
	                T++;
	            } else {
	                continue;
	            }
	        }
	        
	        while (G > 0 || P> 0 || L> 0 || T > 0) {
	            if (G > 0) {
	                System.out.print('G');
	                G--;
	            }
	            if (P > 0) {
	                System.out.print('P');
	                P--;
	            }
	            if (L > 0) {
	                System.out.print('L');
	                L--;
	            }
	            if (T> 0) {
	                System.out.print('T');
	                T--;
	            }
	        }

	    }

	}

快速输入

java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串它以空白来区隔每一个输入字符串,在某些时候并不适用,例如:当使用者可能输入一个字符串,中间会包括空白字元,就不能获得完整的字符串。
java.io.BufferedReader类是按行读取,同时为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本,因此BufferedReader 的效率比Scanner高。
一般会如下定义:

 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;//或者直接用 “import java.io.*;”代替
  
  public class Main{
      public static void main(String[] args) throws IOException {
         BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
         String str=reader.readLine();
         System.out.println(str);
     }
 }

import java.io.StreamTokenizer类可以将任意的输入流分割为一系列标记

StreamTokenizer只能接收数字或字母,如果输入除空格和回车以外的字符(如:!@#$%^&*()[]{})无法识别,会显示null
StreamTokenizer可以获取输入流并根据空格和回车分割成Token(标记),用nextToken方法读取下一个标记
如果标记是字符串,用st.sval获取标记,如果是数字用st.nval获取标记,st.navl是double类型

例如:

import java.io.*;
public class Test {
    public static void main(String[] args) throws IOException {
        StreamTokenizer st =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
        st.nextToken();
        String s=st.sval;
        System.out.println(s);
        st.nextToken();
        double n=st.nval;
        System.out.println(n);
        }
  }      

输入样例:

hello 1234

输出样例:

hello
1234.0

输入样例:

hello1234

输出样例:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值