Java程序读取前缀和后缀
我正在寻找一些代码来读取一个单词的最后两个字母和前两个字母,看看它们是否匹配。单词总是大写的。这是我到目前为止的代码,我很沮丧为什么这不起作用!抱歉成为n00b:)Java程序读取前缀和后缀,java,string,char,Java,String,Char,我正在寻找一些代码来读取一个单词的最后两个字母和前两个字母,看看它们是否匹配。单词总是大写的。这是我到目前为止的代码,我很沮丧为什么这不起作用!抱歉成为n00b:) publicstaticvoidmain(字符串[]args){ //TODO自动生成的方法存根 扫描仪扫描=新扫描仪(System.in); 字符串s; char[]a; int input=scan.nextInt(); scan.nextLine(); 对于(int i=0;i你差不多到了-你缺少的是数组从零开始索引,所以数组
publicstaticvoidmain(字符串[]args){
//TODO自动生成的方法存根
扫描仪扫描=新扫描仪(System.in);
字符串s;
char[]a;
int input=scan.nextInt();
scan.nextLine();
对于(int i=0;i你差不多到了-你缺少的是数组从零开始索引,所以数组中的最后一个元素是[a.length-1],倒数第二个元素是[a.length-2]你差不多到了-你缺少的是数组从零开始索引,所以数组中的最后一个元素是[a.length-1]倒数第二个是[a.length-2]尝试替换这个:
if((a[0] == a[a.length -1]) && (a[1] == a[a.length])){
为此:
if((a[0] == a[a.length - 2]) && (a[1] == a[a.length - 1])){
数组在Java中是基于0的,因此最后一个元素实际上是.length-1
(长度为3的数组的有效索引为[0,1,2]
,而不是[1,2,3]
)
编辑:
然而,由于Brian已经提高了赌注:我会提出一个更好的方案,它不需要将字符串转换为字符数组,也不需要通过使用子字符串创建任何新字符串
String str = scan.nextLine();
if((str.charAt(0) == str.charAt(str.length() - 2)) && (str.charAt(1) == str.charAt(str.length() - 1))){
此外,如果字符串少于2个字符,会发生什么情况?(您可能需要检查此…尝试替换此字符串:
if((a[0] == a[a.length -1]) && (a[1] == a[a.length])){
为此:
if((a[0] == a[a.length - 2]) && (a[1] == a[a.length - 1])){
数组在Java中是基于0的,因此最后一个元素实际上是.length-1
(长度为3的数组的有效索引为[0,1,2]
,而不是[1,2,3]
)
编辑:
然而,由于Brian已经提高了赌注:我会提出一个更好的方案,它不需要将字符串转换为字符数组,也不需要通过使用子字符串创建任何新字符串
String str = scan.nextLine();
if((str.charAt(0) == str.charAt(str.length() - 2)) && (str.charAt(1) == str.charAt(str.length() - 1))){
此外,如果字符串少于2个字符,会发生什么情况?(您可能需要检查这一点…转换为char
数组实际上有点愚蠢
String line = scan.nextLine();
if (line.substring(0,2).equals(line.substring(line.length() - 2)))
{
// it matched ...
}
Edit:您会注意到我使用了substring()的两种形式
以上。第一个参数采用开始和结束索引,而第二个仅采用开始索引并扩展到源字符串的结尾。请特别注意,两个参数版本的第二个参数是所需子字符串后的索引。转换为字符
数组实际上有点愚蠢
String line = scan.nextLine();
if (line.substring(0,2).equals(line.substring(line.length() - 2)))
{
// it matched ...
}
Edit:您会注意到我使用了substring()的两种形式
以上。第一个参数采用开始和结束索引,而第二个仅采用开始索引,并扩展到源字符串的结尾。请特别注意,两个参数版本的第二个参数是所需子字符串后的索引。对于名为startsWith-和endsWith的字符串,分别有布尔方法具体地说,对于类字符串
对于类字符串,有分别称为startsWith-和endsWith的字符串布尔方法
为什么要转换为char
数组?String
类有方法substring()
是有原因的。这是作业吗?请这样标记。为什么要转换为char
数组?String
类有方法substring()
是有原因的。这是家庭作业吗?请加上这样的标签。+1我完全同意。substring()
方法是做这种事情的最佳选择。我昨天已经研究过了,想知道如何做这个方法。这看起来很神奇,我今天晚些时候会尝试它。:)substring()唯一奇怪的事情是
在Java IMHO中,你必须记住第二个参数是你想要的子字符串后面的索引。例如,为了得到前两个字符,你给它0
作为开始索引,2
作为结束索引。但是想一想,我只记得有两个版本;我将编辑我的答案。+1我完全同意esubstring()
方法是执行此类操作时的最佳选择。我昨天研究了此方法,并想知道如何执行此方法。这看起来很神奇,我今天晚些时候将尝试它:)使用substring()唯一奇怪的事情
在Java IMHO中,你必须记住第二个参数是你想要的子字符串后面的索引。例如,为了得到前两个字符,你给它0
作为开始索引,2
作为结束索引。但是考虑到这一点,我只记得有两个版本;我将编辑我的答案。