Вот D упражнение:Почему оператор break не может выйти из цикла while?
import std.stdio;
void main()
{
int[] narray;
while(true) {
writeln("Enter your numbers: ");
int tmp;
readf(" %s", &tmp);
if(tmp == -1) {
writeln("It's -1, finish reading numbers.");
break;
}
else {
writeln("Storing ", tmp, " to array.");
narray ~= tmp;
printArray(narray);
}
}
int[] narrayOdd;
int[] narrayEven;
int counter = 0;
while(counter < narray.length) {
if((counter % 2) == 0) {
narrayEven ~= narray[counter];
}
else {
narrayOdd ~= narray[counter];
}
}
narrayOdd.sort;
narrayEven.sort;
writeln("Your numbers in odd positions sorted: ");
printArray(narrayOdd);
writeln("Your numbers in even positions sorted: ");
printArray(narrayEven);
}
void printArray(int[] x) {
int counter;
while(counter < x.length) {
write(x[counter], " ");
counter++;
}
write("\n");
}
Я имел в виду, чтобы выйти из цикла в то время, когда пользователь вводит -1, но он отказывается сделать это. Ничего плохого?
Я пробовал как dmd, так и ldc2.