Моя задача состоит в печати слово в форме алмаза, как так:Печать слова в формате алмазным
*****s
****p*p
***i***i
**d*****d
*e*******e
r*********r
*e*******e
**d*****d
***i***i
****p*p
*****s
P.S. Звездочки только там, чтобы показать интервал, притворяются, что одна звездочка представляет одно пространство.
До сих пор у меня есть это:
public class DiamondWords
{
public static void main(String[] args)
{
Scanner kbReader = new Scanner(System.in);
System.out.print("Enter a word to be printed in diamond format: ");
String word = kbReader.nextLine();
int wordLength = word.length();
for(int i = 0; i<wordLength-1; i++)
{
System.out.print(" ");
}
wordLength = wordLength - 1;
System.out.print(word.charAt(0));
System.out.println();
int x =1;
int d =1;
for(int j =wordLength; j>0; j--)
{
wordLength = j;
for(int a =1; a<wordLength; a++)
{
System.out.print(" ");
}
System.out.print(word.charAt(x));
for(int q =0; q<d; q++)
{
System.out.print(" ");
}
d+=2;
System.out.print(word.charAt(x));
x++;
System.out.println();
}
//r*********r
//*e*******e
//**d*****d
//***i***i
//****p*p
//*****s
}
}
который печатает первую половину алмаза отлично:
*****s
****p*p
***i***i
**d*****d
*e*******e
r*********r
Единственная часть, где я застрял, когда я должен напечатать последняя половина алмаза. Может кто-то указать мне верное направление? Пожалуйста, не пишите код для меня, просто попробуйте дать мне несколько указателей, основанных на логике, которую я показал. Спасибо.
Хорошо, если вы выяснили верхнюю половину, затем напишите другую для цикла, но измените логику –
, и каждая половина должна будет написать строку точно так же, чтобы код был хорошим кандидатом для разделения на отдельный метод, который можно вызвать в верхнем и нижнем циклах. – slipperyseal
@ScaryWombat Единственная проблема в том, что я не могу понять, как изменить логику. Меня это расстраивает – jpsizzls