2014-01-15 2 views
-3

Я не знаю, как программировать ... Я работал над этим в Computer Science Classjava.lang.StringIndexOutOfBoundsException: индекс строки из диапазона: 7

Instruction: Use nested loops to print out the square word pattern show below. I'm guessing the error is in the toString method, but I can't spot where.

желаемый результат: (при входе ПЛОЩАДЬ)

SQUARE 
Q R 
U A 
A U 
R Q 
ERAUQS 

код:. импорта статического java.lang.System *;

class BoxWord 
{ 
    private String word; 

public BoxWord() 
{ 
    word=""; 
} 

public BoxWord(String s) 
{ 
    setWord(s); 
} 

public void setWord(String w) 
{ 
    word=w; 
} 

public String toString() 
{ 
    String output=word +"\n"; 
    for(int i =0;i<word.length(); i++){ 
    output += word.charAt(i); 
    for(int j = 2; j<word.length();j++) 
     output += " "; 
    output+= word.charAt(word.length()-(i-1))+ "\n"; 
    } 

    for(int k=0; k<word.length(); k++) 
    output+= word.charAt(k); 


    return output+"\n"; 
} 
} 

главная:

import static java.lang.System.*; 

public class Lab11f 
{ 
    public static void main(String args[]) 
    { 
    BoxWord test = new BoxWord("square"); 
    out.println(test); 

} 
} 
+0

Просьба добавить стопку tracke –

+0

Если входной сигнал 'square', какой должен быть вывод? –

+0

Используйте IDE и отлаживайте программу. Это не так сложно. – Jayan

ответ

1

Попробуйте следующее, я объясню, е модификации в комментарии:

public static void main(String[] args) 
{ 
    String word = "square"; 
    String output = word + "\n"; // Initialize with the word 
    for (int i = 1; i < word.length() - 1; i++) { // From '1' to 'length - 1' because we don't want to iterate over the first and last characters 
     output += word.charAt(i); 
     for (int j = 0; j < word.length() - 2; j++) // To add spaces 
      output += " "; 
     output += word.charAt(word.length() - (i + 1)) + "\n"; 
    } 
    for (int k = word.length() - 1; k >= 0; k--) // Add word in reverse 
     output += word.charAt(k); 

    System.out.println(output); 
} 

Выход:

square 
q r 
u a 
a u 
r q 
erauqs 
+0

Я сделал int i = 1, а позже я сделал word.length() -1-i – user3196544

0

На первых двух итераций этого цикла вы будете иметь ошибку:

for(int i =0;i<word.length(); i++){ 
    output += word.charAt(i); 
    for(int j = 2; j<word.length();j++) 
     output += " "; 
    output+= word.charAt(word.length()-(i-1))+ "\n"; 
         ^^^^^^^^^^^^^^^^^^^ 
    } 

Это эквивалентно word.length() - i + 1, которая собирается быть ошибка, когда i составляет 0 или 1.

0
public String toString() 
{ 
    String output=word +"\n"; 
    for(int i =0;i<word.length(); i++){ 
    output += word.charAt(i); 
    for(int j = 2; j<word.length();j++) 
     output += " "; 
    output+= word.charAt(word.length()-(i-1))+ "\n"; 
    } 

выход + = word.charAt (word.length() - (I-1)) + "\ п" ; эта строка делает строковый указатель из связанного исключения

Смежные вопросы