我需要让这段代码识别一个不是字母的字符。嗯,这不是全部,但这就是我遇到的问题。我以为我有正确的代码,它似乎有效,但它也接受了字母。这是代码。
import java.util.Scanner;
public class AlphaPos {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.println(" Please enter an upper or lowercase letter. ");
String letter = input.nextLine();
String alpha = " abcdefghijklmnopqrstuvwxyz";
String beta = " ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if ((letter != alpha) && (letter != beta));
System.out.println(" You entered " +letter+ ", and you obviously can't follow directions.");
boolean hasUppercase = !letter.equals(letter.toLowerCase()); {
if (hasUppercase)
System.out.println("Your letter is " +letter+ ", Uppercase, and its number is "+ beta.indexOf(letter));
boolean hasLowercase = !letter.equals(letter.toUpperCase());
if (hasLowercase)
System.out.println("Your letter is " +letter+ " ,lowercase , and its number is "+ alpha.indexOf(letter));
}
}
}
答案 0 :(得分:0)
我担心你的代码会对Java的运作方式产生很大的困惑。
String letter = input.nextLine();
这会读取整行,而不只是一个字母
String alpha = " abcdefghijklmnopqrstuvwxyz";
String beta = " ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if ((letter != alpha) && (letter != beta));
最后一行不检查letter
以查看它是否与其中一个字符匹配。它比较letter
和alpha
以确定它们是否是对相同字符串的引用,它们永远不会。
此外,尾随分号终止语句,因此以下行
System.out.println(" You entered " +letter+ ", and you obviously can't follow directions.");
无论前面的任何事情都执行 - 它不是if
语句的“then”部分。
让我们假设用户输入单个字母后跟ENTER键一分钟。如果你想验证字符是字母还是空格,你可以这样做:
if (letter.matches("[a-zA-Z ]") ...
但只有在输入单个字符时才会起作用。我可以继续,但你需要学习更多关于Java的知识,而StackOverflow并不是一个真正的教程网站。
答案 1 :(得分:0)
要检查用户是否输入了一个字母,您应该使用contains
方法。它不起作用,因为您将单个字母与整个字符串进行比较(在这种情况下,将letter
与alpha
进行比较,然后再与beta
进行比较),这不是您想要完成的任务。代码示例:
if((!alpha.contains(letter))&&(!beta.contains(letter))) {
//do smith
}
答案 2 :(得分:0)
问题在于您将输入与alpha或beta变量值进行比较,这些变量值永远不会匹配任何唯一且有效的字母。
推荐的更改:
然后,假设字母只有一个字符,您可以将条件更改为:
if(!(alpha.contains(letter) || beta.contains(letter)))
所以我会做出这些改变:
//Changed this line to use the first non-blank character
//You may need to perform a length check before calling substring.
String letter = input.nextLine().trim().substring(0, 1);
String alpha = "abcdefghijklmnopqrstuvwxyz";
String beta = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if(!(alpha.contains(letter) || beta.contains(letter))){
System.out.println(" You entered " +letter+ ", and you obviously can't follow directions.");
}
//And the rest of your code...