在Java中产生小写字符而不是大写
Posted
技术标签:
【中文标题】在Java中产生小写字符而不是大写【英文标题】:Produce lowercase character instead of uppercase in Java 【发布时间】:2021-12-06 04:17:20 【问题描述】:输出正常但是输出是大写字母,我希望输出是小写字符,我该怎么办?
import java.util.Scanner;
public class Q2
public static void main(String[] args)
int a[]=new int[26];
Scanner sc = new Scanner (System.in);
String str=sc.nextLine();
for(int i = 0; i<str.length();i++)
if(str.charAt(i)>=65 && str.charAt(i)<=90)
a[str.charAt(i)-65]++;
else if(str.charAt(i)>=97 && str.charAt(i)<=122)
a[str.charAt(i)-97]++;
for(int i=0;i<26;i++)
if(a[i]>0)
System.out.print(" "+(char )(i+65)+ "(" + a[i]+")");
【问题讨论】:
您可以使用 char 文字代替 int 文字,例如'A'
代替 65
,'a'
代替 97
。这会让你更容易看到你实际在做什么“总和”。
另外,定义一个变量char c = str.charAt(i);
,那么你就不需要一直重复str.charAt(i)
,这样代码更容易阅读。
【参考方案1】:
'A'
是 65。'a'
是 97。在最终循环中使用 97 而不是 65。
或者直接使用'a'
代替数字。这使您在该代码中所做的工作更加明显。
【讨论】:
尼特:'@'
是 64; 'A'
是 65。
@AndyTurner:是的,已修复。谢谢。【参考方案2】:
将整个字符串转换为小写可能更直接,以避免检查大写字母。
此外,如前所述,使用字符文字作为 a
而不是 97 会使代码更具可读性。
Scanner sc = new Scanner(System.in);
int a[] = new int[26];
String str = sc.nextLine().toLowerCase();
for (char c : str.toCharArray())
if (c >= 'a' && c <= 'z')
a[c - 'a']++;
for (char c = 'a'; c <= 'z'; c++)
int i = c - 'a';
if (a[i] > 0)
System.out.print(" "+ c + "(" + a[i] + ")");
【讨论】:
【参考方案3】:查看这篇文章并接受答案How do I convert strings between uppercase and lowercase in Java?
你可能会做这样的事情
import java.util.Scanner;
public class Q2
public static void main(String[] args)
int a[]=new int[26];
Scanner sc = new Scanner (System.in);
String str=sc.nextLine();
String lowerCaseInput = str.toLowerCase();
System.out.print(lowerCaseInput);
【讨论】:
以上是关于在Java中产生小写字符而不是大写的主要内容,如果未能解决你的问题,请参考以下文章