【问题标题】:How to get a range of characters? (alphabet)如何获得一系列字符? (字母)
【发布时间】:2011-02-24 01:38:02
【问题描述】:

我已经为此工作了几个小时,现在我有点卡住了....请帮助我。 我是一个完整的编程障碍。除了字母表之外,所有方法都可以正常工作。

它将接收两个字符(大写或小写)并返回一个由给定字符值范围组成的字符串。保持传递给方法的相同大小写(大写或小写)。如果将大写和小写字符(各一个)传递给该方法,则将大写字符转换为小写并使用小写范围。请注意,范围将包括起始字符,不包括结束字符。另外,请注意如果给定的开始(第一个)字符大于结束(第二个)字符,例如“m”和“h”,则该方法将返回一个空字符串,因为此范围内没有字符。

你能给我一些帮助吗?

import java.util.*;

class CharacterOperations
{
public static void run()
{
int number=1;
Scanner scanner = new Scanner(System.in);
while(number > 0)
{
System.out.println("(1) Insert 1 to change a letter from its lower case value to its upper case value");
System.out.println("(2) Insert 2 to change a letter from its upper case value to its lower case value ");
System.out.println("(3) Insert 3 for the alphabet method (range of two letters) ");
System.out.println("Enter a number (or negative to quit): ");
number = scanner.nextInt();

if (number == 1)
{
System.out.print("Enter a lower case letter: ");
String a= scanner.next();
char letter = (char) a.charAt(0);
toUpper(letter);
}
else if (number == 2)
{
System.out.print("Enter an upper case letter: ");
String a= scanner.next();
char letter = (char) a.charAt(0);
toLower(letter);
}
else if (number == 3)
{
System.out.print("Enter an upper case or lower case letter: ");
System.out.print("Enter an upper case or lower case letter: ");
String a= scanner.next();
char letter1 = (char) a.charAt(0);
String b= scanner.next();
char letter2 = (char) b.charAt(0);
alphabet(letter1, letter2);
}
}
}

public static char toUpper(char letter)
{
int rep = ((int)letter - 32);
char ltr = (char)rep;
System.out.println("The letter "+ ltr + " integer representation is: " + rep);
return (char) ((int) letter -32);
}

public static char toLower(char letter)
{
int rep = (int)(letter + 32);
char ltr = (char)rep;
System.out.println("The letter " + ltr + " integer representation is: " + rep);
return (char) ((int) letter + 32);
}

public static String alphabet( char letter1, char letter2){ 
 int rep1 = (int)letter1;
 int rep2 = (int)letter2;
 char ltr1 = (char)rep1;
 char ltr2 = (char)rep2;
System.out.println("The letter " + ltr1 + " integer representation is: " + rep1);
System.out.println("The letter " + ltr2 + " integer representation is: " + rep2);

}
}

谢谢!

【问题讨论】:

    标签: java


    【解决方案1】:
    for (char c = 'a'; c <= 'z'; c++) {
            System.out.println(c);
        }
    

    很简单^_^

    【讨论】:

      【解决方案2】:

      对于一个 char,您只需 ++ 即可获取下一个 char,依此类推。

      char a = 'a';
      a++; // now you have b
      a++; // now you have c
      

      只需执行一个while循环来从开始到结束字符。

      【讨论】:

      • 最好的部分是它可以在大多数的场景中工作。谢谢。
      【解决方案3】:

      首先使用它来生成一个随机字母。您首先必须在一定范围内生成一个随机数。然后,当您取回数字并将其存储在 char 变量中时,它会将其显示为字母。

      char letter = 0;
      letter = (char) (65 + (char)(Math.random() * (90 - 65) + 1));
      

      【讨论】:

        【解决方案4】:

        此答案假定您只是在谈论 ASCII 集中的标准键盘字符。

        获取 2 个字符的 ascii 代码并创建一个循环:

        StringBuilder buf = new StringBuilder();
        
        for (int i = rep1; i <= rep2; ++i) 
            buf.append((char)i);
        
        return buf.toString();
        

        这将起作用,因为它们都需要相同的大小写...

        【讨论】:

          【解决方案5】:
          public static String alphabet(char letter1, char letter2) { 
              StringBuffer out = new StringBuffer();    
              for (char c = letter1; c < letter2; c++) {
                  out.append(c);
              }
              return out.toString();
          }
          

          显然你应该添加一些错误检查和处理

          【讨论】:

          • 这里不重要,但使用 StringBuilder,效率更高,因为它的方法不同步。只是我仍然在单线程上下文中看到很多使用旧 StringBuffer 的代码,而且 StringBuilder 已经在 API 中使用多年了......
          • 我不想让它太复杂,但这是一个好点。
          【解决方案6】:

          简单的解决方案:

              String str = "A"
              char cr = str.charAt(0);
              
              System.out.println((cr += 1)); //got B
          

          【讨论】:

            【解决方案7】:

            public static String alphabet(char letter1, char letter2){

            期望返回一个字符串,因为您说的是 public static "String"

            取出字符串,这应该可以,如果您只想使用 System.out.print 打印,请将其替换为 void。或返回您制作的字符串

            除此之外,我对大写和小写的建议是将 char 转换为 String 并仅使用 java 内置方法。

            【讨论】:

            • 问题询问如何创建要返回的字符串。
            猜你喜欢
            • 2012-08-26
            • 1970-01-01
            • 1970-01-01
            • 2016-09-17
            • 2019-05-15
            • 2014-01-19
            • 2020-01-03
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多