2017-02-21 25 views
0

Итак, я пытаюсь написать код для печати местоположения любого пространства в 2-символьной строке 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)); 
    } 
    } 
    } 
    } 

однако я нашел способ сделать это там, где он будет правильно оцениваться, если код доступа = ""; размещены ниже

int indexOfSpace = passCode.indexOf(" "); 

    while(indexOfSpace >= 0){ 

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

    } 

может кто-то пожалуйста, объясните мне, почему это работает, когда оба индекса являются пустым время цикла, а не за цикл?

Спасибо

ответ

0

Оба ваши решения правильны, проблема ваши заявления печати. А именно:

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

Здесь вы запрашиваете символ в данном индексе, но ваша проблема возникает, когда смотришь с использованием символа. indexOf (char) возвращает первый индекс, содержащий этот символ. Поскольку строка имеет два одинаковых символа, она всегда будет возвращать первый индекс в этом экземпляре. Вы должны распечатать свой индекс вместо:

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

спасибо оценить вы помощь! – fijilemon12

0

Это работает, но очень зачаточном:

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; 
    } 
} 
Смежные вопросы