首页 > 试题广场 >

首字母大写

[编程题]首字母大写
  • 热度指数:30527 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。 在字符串中,单词之间通过空白符分隔,空白符包括:空格(' ')、制表符('\t')、回车符('\r')、换行符('\n')。

输入描述:
输入一行:待处理的字符串(长度小于100)。


输出描述:
可能有多组测试数据,对于每组数据,
输出一行:转换后的字符串。
示例1

输入

if so, you already have a google account. you can sign in on the right.

输出

If So, You Already Have A Google Account. You Can Sign In On The Right.
import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		while (scanner.hasNextLine()) {
			StringBuilder s = new StringBuilder(scanner.nextLine());
			// 处理第一个字母
			if (s.charAt(0) >= 'a' && s.charAt(0) <= 'z') {
				s.replace(0, 1, String.valueOf(s.charAt(0)).toUpperCase());
			}
			// 处理剩余字母
			for (int i = 0; i < s.length(); i++) {
				if ((s.charAt(i) == ' ' || s.charAt(i) == '\t' || s.charAt(i) == '\n' || s.charAt(i) == '\r') && i != s.length()-1) {
					if (s.charAt(i+1) >= 'a' && s.charAt(i+1) <= 'z') {
						s.replace(i+1, i+2, String.valueOf(s.charAt(i+1)).toUpperCase());
					}
				}
			}
			System.out.println(s);
		}
	}
}

发表于 2023-03-24 18:15:51 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String pro = in.nextLine();
        String ans = "";
        if (pro.charAt(0) >= 'a' && pro.charAt(0) <= 'z') {
            char temp = (char) (pro.charAt(0) - 32);
            ans = ans + temp;
        }
        else{
            ans=ans+pro.charAt(0);
        }
        for (int i = 1; i < pro.length(); i++) {
            if (pro.charAt(i-1) == ' ' || pro.charAt(i-1) == '\t' || pro.charAt(i-1) == '\r' || pro.charAt(i-1) == '\n') {
                if (pro.charAt(i) >= 'a' && pro.charAt(i) <= 'z') {
                    char temp = (char) (pro.charAt(i) - 32);
                    ans = ans + temp;
                } else {
                    ans = ans + pro.charAt(i);
                }

            } else {
                ans = ans + pro.charAt(i);
            }
        }
        System.out.println(ans);
    }
}

发表于 2023-03-10 16:49:41 回复(0)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s;
        while ((s = br.readLine()) != null) {
            char[] arr = s.toCharArray();
            for (int i = 0; i < arr.length; i++) {
                arr[0] = Character.toUpperCase(arr[0]);
                if (arr[i] == ' ' || arr[i] == '\t' || arr[i] == '\r' || arr[i] == '\n') {
                    arr[i + 1] = Character.toUpperCase(arr[i + 1]);
                }
            }
            System.out.println(String.valueOf(arr));
        }
    }
}

发表于 2021-09-29 09:03:33 回复(0)
Java 解法一
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        char[] arr = scanner.nextLine().toCharArray();
        if(Character.isLetter(arr[0])) arr[0] = Character.toUpperCase(arr[0]);
        for(int i = 0; i < arr.length; i++)
            if((arr[i]==' '|| arr[i] == '\t')&&(Character.isLetter(arr[i+1])))
                arr[i+1] = Character.toUpperCase(arr[i+1]);
        for (char c : arr) System.out.print(c);
    }
}

解法二
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            Matcher matcher = Pattern.compile("\\w+").matcher(scanner.nextLine());;
            StringBuffer buffer = new StringBuffer();
            while (matcher.find()) {
                String word = matcher.group();
                String replace = Character.toUpperCase(word.charAt(0)) + word.substring(1);
                matcher.appendReplacement(buffer, replace);
            }
            matcher.appendTail(buffer);
            System.out.println(buffer.toString());
        }
    }
}



编辑于 2020-03-18 21:58:23 回复(0)
import java.util.Scanner;

public class Main {
   
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String n = in.nextLine();
        
        char[] arr = n.toCharArray();
        
        for(int i = 0; i < arr.length; i++){               //首先对第一个字符变换
            if(arr[0] >= 'a' && arr[0] <= 'z'){
                arr[0] = (char) (arr[0] - 32);
            }
        }
        
         for(int i = 0; i < arr.length; i++){               //对每行第一个数字处理变为大写
            if(arr[i]==' '|| arr[i] == '\t'){
                if(arr[i+1] >= 'a' && arr[i+1] <= 'z'){
                    arr[i+1] = (char) (arr[i+1] - 32);
                }
            }
        }
        
        for(char e : arr)
          System.out.print(e);        
        in.close();
    }
}

发表于 2020-03-08 17:47:55 回复(0)
这题不难,主要是分割符的处理。我额外开了一个string builder存放结果,其实简单点做法也可以直接打印出来。

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        String line = reader.nextLine();
        StringBuilder sb = new StringBuilder();
        int start = 0;
        for (int end = 0; end <= line.length(); ++end) {
            if (end == line.length() || (line.charAt(end) == ' ' || line.charAt(end) == '\t' || line.charAt(end) == '\r' || line.charAt(end) == '\n')) {
                if (end == line.length())
                    sb.append(line.substring(start, end));
                else
                    sb.append(line.substring(start, end+1));
                if (line.charAt(start) >= 'a' && line.charAt(start) <= 'z') {
                    sb.setCharAt(start, (char)(line.charAt(start) - 'a' + 'A'));
                }
                start = end + 1;
            }
        }
        System.out.println(sb.toString());
    }
}


发表于 2018-05-30 17:59:13 回复(1)
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by fhqplzj on 17-2-26 at 下午8:31.
 */
public class Main {
    private static String capitalize(String s) {
        Pattern pattern = Pattern.compile("\\w+");
        Matcher matcher = pattern.matcher(s);
        StringBuffer stringBuffer = new StringBuffer();
        while (matcher.find()) {
            String group = matcher.group();
            String replacement = Character.toUpperCase(group.charAt(0)) + group.substring(1);
            matcher.appendReplacement(stringBuffer, replacement);
        }
        matcher.appendTail(stringBuffer);
        return stringBuffer.toString();
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()) {
            System.out.println(capitalize(scanner.nextLine()));
        }
    }
}

编辑于 2017-02-26 22:02:25 回复(0)