卡码网语言基础课|11.句子缩写

本节课了解了ASCII码和字符操作。

  • 字符大小的比较

每个字符都有一个唯一的 ASCII 编码值,表示它在 ASCII 字符集中的位置。在比较字符大小时,实际上是比较它们的 ASCII 编码值,比如小写字母 a的 ASCII 编码值是 97, 小写字母b的 ASCII 编码值是98。大写字母 A 的ASCII编码值是 65, 大写字母 B 的ASCII编码值是 66, 大小写字母之间的差值是32。

字符比较时直接使用"<",">","="即可。

字符转换:

  • toUpperCase(): 将小写字母转换成大写形式
  • toLowerCase(): 将大写字母转换成小写形式
char a = 'a'; // 小写字符 'a'
char uppercaseChar = Character.toUpperCase(a); // 大写字符 'A'
  • 字符串trim()方法

Java 中的 trim() 方法用于移除字符串两端的空白字符。

  • StringBuilder的使用

这是因为如果你使用 String 进行字符串拼接,每次拼接都会创建一个新的字符串对象,这会产生大量的临时对象,会影响性能。而使用 StringBuilder 可以避免这个问题,StringBuilder 是可变的,它允许你在不创建新的字符串对象的情况下进行字符串的连接和修改,不会创建大量的临时对象,因此更高效。

题目描述

输出一个词组中每个单词的首字母的大写组合。

输入描述

输入的第一行是一个整数n,表示一共有n组测试数据。(输入只有一个n,没有多组n的输入)
接下来有n行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成;每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成;
单词长度不超过10,由一个或多个空格分隔这些单词。

输出描述

请为每组测试数据输出规定的缩写,每组输出占一行。

输入示例

1

ad dfa       fgs

输出示例

ADF

提示信息

注意:单词之间可能有多个空格

题解

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextLine()){
            int n=sc.nextInt();
            sc.nextLine();//吸收掉回车符
            for(int i=0;i<n;i++){//读取n行字符串
                String in=sc.nextLine().trim();//去掉两端空白字符
                StringBuilder out=new StringBuilder();
                char[] input=in.toCharArray();//转为字符数组
                int j=0;
                while(j<input.length){
                    if(input[j]<='z' && input[j]>='a'){
                        input[j]=Character.toUpperCase(input[j]);
                    }//读取每个单词首字母,转为大写字母
                    out.append(input[j]);
                    while(j<input.length && input[j]!=' '){
                        j++;
                    }//跳过每个单词后续字母
                    while(j<input.length && input[j]==' '){
                        j++;
                    }//跳过单词间空行
                }
                System.out.println(out.toString());
            }
        }
    }
}
  • 第8行为什么要加入一个sc.nextLine()?

sc.nextInt()和下一个sc.nextLine()之间一般要加入一行sc.nextLine(),因为nextInt只读取了一个整型数,后面还有换行符,sc.nextLine()读到换行符结束,相当于读完了n所在的第一行。若输出加入的这一行sc.nextLine()会发现它等于"",没有字符。

String temp=sc.nextLine();
if(temp.equals("")){
    System.out.println("Yes");
}

具体参考

nextInt()和nextLine()-早起之王

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值