我将如何限制字符的长度?

问题描述

问题是:编写一个 Java 程序,要求用户提供字母表中的一个字符。根据用户输入打印元音或辅音。如果用户输入的不是字母(介于 a 和 z 或 A 和 Z 之间),或者是长度 > 1 的字符串,则打印适当的描述性错误消息。

我做了一个 switch 语句,它成功地告诉你是否有元音或辅音,但如果用户输入的长度超过一个字符,我不知道如何给出错误消息。

>
import java.util.Scanner;
public class VowelKL{
public static void main(String[] args){

int i=0;
Scanner input=new Scanner(system.in);
System.out.println("Enter a single letter from the alphabet: ");
char letter=input.next().charat(0);

switch(letter)
{
case 'a' :
case 'e' :
case 'i' :
case 'o' :
case 'u' : 
case 'A' :
case 'E' :
case 'I' : 
case 'O' :
case 'U' : i++;
}
if(i==1)
System.out.println("You entered the letter " + letter + " and it is a Vowel!");
else
if((letter>='a' && letter<='z')||(letter>='A' && letter<='Z'))
System.out.println("You entered the letter " + letter + " and it is a Consonant!");
else
System.out.println("You did not enter a single character from the alphabet,please try again.");



}
}

解决方法

你可以使用这样的东西

public int length() {  
      return i.length;  
  } 

有几种方法可以做到这一点,上面只是一个例子,但 .length() 属性将为您提供字符串长度的 int 值。在上面的例子中,我们将 int 作为一个值返回。

在您的情况下,您可以创建一个新的 int 变量,然后为其分配长度。

int x = letter.length()

这会将字符串的长度设为 int 值。然后,您可以使用它并针对它高于或低于 1 的值编写 if 语句。

编辑:

我很快用 java 写了这个,它似乎按预期工作。希望能帮助您指明正确的方向。请注意,您需要将变量 letterchar 更改为 String

import java.util.Scanner;

public class main {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner input=new Scanner(System.in);
    System.out.println("Enter a single letter from the alphabet: ");
    String letter= input.nextLine();
    
    if (letter.length() == 1)
        System.out.println("Only one letter was entered");
    else
        System.out.println("Either no letter or more than one letter was entered");         
}
,

因为您已经在用户输入命令中指定用户输入仅允许在索引 0 处,即 charAt(0)。因此没有其他方法可以提取该字符值的索引位置。除非您必须在字符串类型中强制转换该特定字符,然后才能访问 String 的

str.lastIndexOf(char) 方法来提供限制。 这不是最佳做法。