编写代码以打印字符串中任何空格的位置

时间:2017-02-21 22:41:33

标签: java for-loop while-loop

所以我正在尝试编写代码来打印2个字符的字符串passCode中任何空格的位置。检测到的每个空格应打印一个单独的语句,后跟换行符。

我写了这段代码,直到passcode =“”;

  public class space{
  public static void main(String args[]) { 
  String passCode = "";
  passCode = "A ";

  int p = passCode.length();

  /*
  for(int i = 0; i < p; i++) {
     int b = passCode.charAt(i);
     if(Character.isWhitespace(b)){
        System.out.println("Space at " + passCode.indexOf(b));
     }
  }
  } 
  } 

然而,如果passcode =“”,我找到了一种方法来正确评估 发布在下面

int indexOfSpace = passCode.indexOf(" ");

   while(indexOfSpace >= 0){

     System.out.println("Space at " + indexOfSpace);
     indexOfSpace = passCode.indexOf(" ", indexOfSpace + 1);

     }

有人可以向我解释为什么当while循环的两个索引都为空而不是for循环时它是否有效?

谢谢

2 个答案:

答案 0 :(得分:1)

这有效,但非常简陋:

import java.util.Scanner;

public class FindSpaces {
   public static void main (String [] args) {
      String passCode = "";

      passCode = "A ";
      boolean whitespaceAtZero = false;
      boolean whitespaceAtOne = false;

      whitespaceAtZero = Character.isWhitespace(passCode.charAt(0));
      whitespaceAtOne = Character.isWhitespace(passCode.charAt(1));

      if (whitespaceAtZero) {
         System.out.println("Space at 0");
      }
      if (whitespaceAtOne) {
         System.out.println("Space at 1");
      }

      return;
   }
}

答案 1 :(得分:0)

您的两个解决方案都是正确的,问题是您的打印报表。即:

int b = passCode.charAt(i);
System.out.println("Space at " + passCode.indexOf(b));

在这里,您要检索给定索引处的字符,但是在查找使用该字符时会出现问题。 indexOf(char)返回包含该字符的第一个索引。由于字符串具有两个相同的字符,因此它将始终返回此实例中的第一个索引。您应该打印出索引:

System.out.println("Space at " + i);