Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java程序读取前缀和后缀_Java_String_Char - Fatal编程技术网

Java程序读取前缀和后缀

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你差不多到了-你缺少的是数组从零开始索引,所以数组

我正在寻找一些代码来读取一个单词的最后两个字母和前两个字母,看看它们是否匹配。单词总是大写的。这是我到目前为止的代码,我很沮丧为什么这不起作用!抱歉成为n00b:)

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我完全同意e
substring()
方法是执行此类操作时的最佳选择。我昨天研究了此方法,并想知道如何执行此方法。这看起来很神奇,我今天晚些时候将尝试它:)使用
substring()唯一奇怪的事情
在Java IMHO中,你必须记住第二个参数是你想要的子字符串后面的索引。例如,为了得到前两个字符,你给它
0
作为开始索引,
2
作为结束索引。但是考虑到这一点,我只记得有两个版本;我将编辑我的答案。