2014-04-03 2 views
-3

Мне нужно, чтобы выход программы составлял десять символов «*», а затем каждая следующая строка меньше звезды, пока не будет только один. Мне нужно сделать это, используя цикл. Я могу добавлять звезды, но не вычитать их. Пожалуйста, взгляните на мою программу и посмотрите, сможете ли вы помочь.Вычитание символов в цикле

public static void main(String[] args) 
{ 
    int count; 
    String stars; 
    stars = "**********"; 
    String star = "*"; 
    System.out.println(stars); 

    for (count = 10; 0 < count;) 
    { 
     stars = (stars - star); 
     System.out.println(stars); 
     count--; 
    } 
} 
+0

попробовать подстроку метод – innoSPG

+0

Добро пожаловать на StackOverflow. Когда вы создаете вопрос, вы можете просмотреть предварительный просмотр того, как он будет выглядеть с вашим текущим форматированием, поэтому, прежде чем вы решите опубликовать его, уделите ваше время и отформатируйте его правильно. – Pshemo

ответ

0

Попробуйте это,

stars = (stars.replaceFirst("\\*", "")); 

вместо

stars = (stars - star); 
1

Вы не можете сделать String - String. Вы можете использовать String.substring

stars = stars .substring(0, stars .length() - 1); 
System.out.println(stars); 

Примечание, что правильный способ написания for цикла является:

for(initialization; Boolean_expression; update) 
{ 
    //Statements 
} 

Таким образом, вы должны написать свой for цикл как:

for (count = 10; 0 < count; count--) 
{ 
    stars = stars .substring(0, stars .length() - 1); 
    System.out.println(stars); 
} 
0
for(int i =10;i>0;i--){ 

    for(int j=i;j>0;j--) 
     System.out.print('*'); 
    System.out.print('\n');//exit main loop 

} 
+0

Пара быстрых указателей мы обычно использовали бы одинарные кавычки final '' '', потому что это буквальный. Также имейте в виду, сколько переменных вы использовали и сколько я использовал для решения этих небольших проблем, при которых мало пользы от памяти пригодится если вы заинтересованы в более крупных программах, которые требуют серьезной озабоченности использованием памяти. Я также заметил ваше использование декремента в конце, вы можете заметить, что я поместил мой с телом цикла, чтобы оставаться организованным –

0

Один из подходов может заключаться в печати звездочки в цикле для каждой строки, без сохранения строки throughtout процесса:

for (count = 10; 0 < count; --count) { 
    for (int i = 0; i < count; ++i) { 
     System.out.print("*"); 
    } 
    System.out.println(); 
} 

Если вы непреклонны о сохранении строки в процессе выполнения программы, я предлагаю не используя String, но изменяемые StringBuilder:

StringBuilder stars = new StringBuilder("**********"); 
while (stars.length() > 0) { 
    System.out.println(stars); 
    stars.setLength(stars.length() - 1); 
} 
Смежные вопросы