ng-if="schedule.NOM_EQU1"
输入word =>女士
package palindrome;
import java.util.Scanner;
public class Palindrome
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter the word = > ");
String word = input.nextLine();
int flag = 0;
int x = word.length();
int i = 0;
int j = x;
for(; i<=x/2 && j>=x/2; i++,j--)
{
if(word.charAt(i)!=word.charAt(j))
{
flag = 1;
break;
}
}
if(flag==0)
{
System.out.printf("The word '%s' is a palindrome", word);
}
else
System.out.printf("The word '%s' is not a palindrome", word);
}
}
答案 0 :(得分:2)
int j = x;
应该是:
int j = x-1;
答案 1 :(得分:1)
您必须将j的初始值设置为length-1
import java.util.Scanner;
public class Scratch
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter the word = > ");
String word = input.nextLine();
int flag = 0;
int x = word.length()-1;
int i = 0;
int j = x;
for(; i<=x/2 && j>=x/2; i++,j--)
{
if(word.charAt(i)!=word.charAt(j))
{
flag = 1;
break;
}
}
if(flag==0)
{
System.out.printf("The word '%s' is a palindrome", word);
}
else
System.out.printf("The word '%s' is not a palindrome", word);
}
}
答案 2 :(得分:0)
索引从数组中的0开始。
package palindrome;
import java.util.Scanner;
public class Palindrome
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter the word = > ");
String word = input.nextLine();
int flag = 0;
int x = word.length();
int i = 0;
int j = x-1;
for(; i<=x/2 && j>=x/2; i++,j--)
{
System.out.println(i+" " +j );
if(word.charAt(i)!=word.charAt(j))
{
flag = 1;
break;
}
}
if(flag==0)
{
System.out.printf("The word '%s' is a palindrome", word);
}
else
System.out.printf("The word '%s' is not a palindrome", word);
}
}
答案 3 :(得分:0)
你只是忘记将单词的长度减少1: 记住Java中字符串和数组的索引从0开始,因此长度应始终为-1,因为它不会到达。例如,如果单词的长度为4,则可以达到索引3,即0到3,总长度为4。
int x = word.length()-1;
int i = 0;
int j = x;
for (; i <= x / 2 && j >= x / 2; i++, j--) {
if (word.charAt(i) != word.charAt(j)) {
flag = 1;
break;
}
}
答案 4 :(得分:0)
只是澄清其他答案:
字符串是一个字符数组,所以如果你写“女士”
[m][a][d][a][m] -> is 5 letters, so its length is 5
[0][1][2][3][4] -> but the indexes start with 0, so the last one is 4
因此,x=word.length()-1
答案 5 :(得分:0)
我在你的代码中犯了错误。
&#34; j = x的值;&#34; // 是错的 由于String是一个字符数组,因此从0开始到string.length-1。
因此 int j = x-1 ; //会做对吗
答案 6 :(得分:0)
我的建议是你应该有一个单独的方法来检查回文,这样你就可以使你的代码变得干净和质量代码。你可以使用以下方法来检查回文:
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter the word = > ");
String word = input.nextLine();
if(isPalindrome(word))
{
System.out.printf("The word '%s' is a palindrome", word);
}
else
System.out.printf("The word '%s' is not a palindrome", word);
}
private static boolean isPalindrome(String input) {
if(input == null || input.isEmpty()) {
return false;
}
for(int i=0,j=input.length() -1; i > j; i++,j-- ) {
if(input.charAt(i) != input.charAt(j)) {
return false;
}
}
return true;
}
答案 7 :(得分:-2)
我认为这是因为5的结果分为2。 尝试将中间长度保持为整数。