如何检查字符串中的每个奇数索引是否具有相同的字母?

时间:2016-03-03 03:52:04

标签: java

我正在编写这个程序,我需要验证字符串中的每个奇数索引是否都有字母“X”。例如,如果我的字符串是:AXFXTX,那么我应该收到一条消息:“GOOD”,如果不是,我应该收到一条消息:“BAD”。任何人都可以告诉我我错过了什么。先谢谢你。

这是我的代码

import java.util.Random;
import java.util.Scanner;

public class Program {

public static void main(String[] args) {

    Random rand = new Random();
    Scanner scan = new Scanner(System.in);

    int min = 1;
    int max = 10;
    int randomNum = rand.nextInt((max - min) + 1) + min;

    System.out.println("Random number = " + randomNum);
    System.out.print("Enter a word of " + randomNum + " characters:");
    String myString = scan.nextLine();

    while(myString.length() != randomNum){
        System.out.print("Enter a word of " + randomNum + " characters:");
        myString = scan.nextLine();
    }

    char[] c  = myString.toCharArray();
    for(int i = 0 ; i < c.length ; i++){
        if(c[i] == 'X'){
            System.out.println("GOOD!");
        }
        else{
            System.out.println("BAD");
        }
    }       
 }
}

7 个答案:

答案 0 :(得分:5)

如果我理解你的问题,那么重要的是要注意第一个奇数索引是1。因此,您可以从3开始,检查是否与第一个奇偶数(index += 2)相同。像,

boolean sameLetter = true;
for (int index = 3; index < c.length && sameLetter; index += 2) {
    sameLetter = (c[1] == c[index]);
}
System.out.println(sameLetter ? "GOOD!" : "BAD");

答案 1 :(得分:4)

仅仅评估奇数指数:

char[] c  = myString.toCharArray();
boolean good = true;

for(int i = 3 ; i < c.length ; i+=2){
    if(c[i] != c[i-2]){
        good = false;
        break;
    }
}     

if(good) System.out.println("GOOD");
else System.out.println("BAD");

答案 2 :(得分:2)

尝试

booelan allGood = true;
for(int i = 2 ; i < c.length ; i = i + 2){
    if(c[i] != c[0]){
        allGood = false;
        break;
    }
}  

答案 3 :(得分:2)

我只想在这里使用正则表达式

str.matches(".(\\w)(.\\1)+") //真是好

答案 4 :(得分:1)

首先,您需要一个布尔变量来跟踪它是否在所有字符中保持一致。其次,你需要改善你的循环

boolean testSucceed = true;

for(int i = 1 ; i < c.length ; i += 2){
  if (c[i] != 'X') testSucceed = false;
  break;
}
if(testSucceed){
  System.out.println("GOOD!");
} else{
  System.out.println("BAD");
}

答案 5 :(得分:1)

将for循环更改为:     for(int i = 0; i&lt; c.length; i + = 2) 所以它会超越替代角色。

答案 6 :(得分:-2)

//如果不能被2整除则仅检查ODD编号 编辑:你被假设使用模数%而不是除法%。我的错     for(int i = 0; i&lt; c.length; i ++){     if(c [i]%2!= 0){             if(c [i] ==&#39; X&#39;){                 的System.out.println(&#34;好!&#34;);             }             其他{                 的System.out.println(&#34; BAD&#34);             }     }         }