我对java很新,我想知道如果第一个和最后一个字母不一样,我的代码如何返回false
他的整个指令是定义和测试一个名为checkString的方法,该方法将单词作为参数并检查String是否以相同的字母开头和结尾。如果两个字母都相同,则该方法返回true,否则返回false(返回布尔值)。该程序将小写和大写字母视为等效字母
这就是我所拥有的:
import java.util.Scanner;
public class Excercise5 {
public static void main(String[] arg) {
Scanner keyboard = new Scanner(System.in);
System.out.print("Type a string: ");
String word = keyboard.nextLine();
System.out.printf ("%s begins and ends with the same letter.", checkString(word));
}
public static boolean checkString (String word) {
int stringLength = word.length();
String letter1 = (word.substring (0,1)).toUpperCase();
String lastletter = (word.substring ((stringLength-1),(stringLength))).toUpperCase();
if (letter1.equals(lastletter)){
return true;
} else {
return false;
}
}
}
答案 0 :(得分:3)
您可以执行以下操作:
public boolean firstAndLast(String word)
{
return Character.toUpperCase(word.charAt(0)) == Character.toUpperCase(word.charAt(word.length()-1));
}
这将检查0和长度-1的位置,看它们是否相互相等。如果是,则返回true,否则返回false。
答案 1 :(得分:2)
根据您的代码;而不是:
if (letter1.equals(lastletter)) {
return true;
} else {
return false;
}
只是做:
return letter1.equals(lastletter);
但是,您的checkString() {...}
代码应为:
public static boolean checkString (String word) {
int len = word.length();
word = word.toUpperCase(); //since you are testing them as upper case
char firstLetter = word.charAt(0);
char lastLetter = word.charAt(len - 1);
return firstLetter == lastLetter;
}
而不是:
System.out.printf (word + " begins and ends with the same letter.", checkString(word));
使用print()
:
System.out.print(word + " begins and ends with the same letter: " + checkString(word));
修改强>
如果您想使用printf()
尝试类似:
System.out.printf("%s begins and ends with the same letter. %s", word , checkString(word));
%s
就像是word
的占位符和checkString(word)
返回的值。
答案 2 :(得分:1)
如果你想单行:
return (word.substring (0,1)).toUpperCase().equals(word.substring(word.length()-1).toUpperCase());
在.equals(...)
取出第一个字符之前,将其转换为一个案例,只要您以后使用相同的案例,无论哪个案例都无关紧要。
word.substring(string.length()-1).toUpperCase();
获取最后一个键并将其转换为大写。
这就是我最有可能写的方式
private boolean isFirstAndLastEqual (String word) {
char first = Character.toUpperCase(word.charAt(0));
char last = Character.toUpperCase(word.charAt(word.length()-1));
return first == last;
}
答案 3 :(得分:0)
您不需要这么复杂的代码。
这是一个非常简单的书面方法,可以完美地完成工作。
public static boolean checkString (String word) {
return word.toLowerCase().charAt(0) == word.toLowerCase().charAt(word.length()-1);
}
它将String输入的第一个和最后一个字符比较为小写,以便它匹配较低和较高的字符串。
答案 4 :(得分:0)
您使用printf是错误的,因为您没有打印出true / false值。可以在输出字符串中添加布尔说明符,也可以使用println。
System.out.printf (word + " begins and ends with the same letter - %b\n", checkString(word));
System.out.println (word + " begins and ends with the same letter " + checkString(word));
答案 5 :(得分:0)
您可以执行以下操作
public static boolean checkString(final String word) {
final String checkedString = word.toLowerCase();
final char[] chararray = checkedString.toCharArray();
if (chararray.length > 1) {
return chararray[0] == chararray[chararray.length-1];
} else {
return true;
}
}
这会将String转换为小写。 (您也可以使用word.toUpperCase();
实现此目的)之后将String转换为char数组,然后检查第一个和最后一个" char"。如果给定的字符串长度为" 0"然后将返回true
。根据您对emtpy字符串的决定方式,您还可以将其更改为false
答案 6 :(得分:0)
这应该可以满足您的需求。
这会得到第一个字母(索引0处的字符):firstletter = (word.charAt(0)).toUpperCase();
这会得到最后一个字母:firstletter = (word.charAt(0)).toUpperCase();
最后一个字符位于索引word.length-1
。例如,如果你的单词是“apple”,它的长度为5,但是最后一个字符是索引4(记住,0-4不是1-5;字母1是误导性的,它实际上是字母0)。
正如Savior Self所提到的,使用charAt
更有效率。另外,您可以使用char
而不是String
和==
来比较它们。
此外,您可以在致电checkString
时将返回值分配给变量。例如,boolean checkStr = checkString(word);
然后在打印语句中使用checkStr
。
import java.util.Scanner;
public class Excercise5 {
public static void main(String[] arg) {
Scanner keyboard = new Scanner(System.in);
System.out.print("Type a string: ");
String word = keyboard.nextLine();
boolean checkStr = checkString(word);
System.out.println(word + " begins and ends with the same letter: " + checkStr;
}
public static boolean checkString (String word) {
char firstletter = (word.charAt(0)).toUpperCase();
char lastletter = (word.charAt(word.length-1)).toUpperCase();
return (firstletter == lastletter);
}
}
另外,由于我没有足够的评论点,一个更好的单行将是:
return (word.charAt(0)).toUpperCase() == (word.charAt(word.length-1)).toUpperCase());