Много раз я запускаю это, существует бесконечная проблема цикла, но я просто не могу узнать, что/где она. В других случаях он работает нормально. Во время бесконечной ошибки запуска программа даже не запускает начальную часть, где я говорю программе для отображения arrayList. У меня есть массивList, называемый dailyPlanetStreet, заполненный объектами любого класса Goodguy Badguy Person или NormalGuy. В моем снятом механизме ниже, если на одной стороне плохого парня есть нормальный парень/человек, я удаляю этого человека/normalguy. Если на обеих сторонах есть нормальный игрок/человек, я случайно удаляю один из них. Кроме того, каждый раз, когда я удаляю его, я беспорядочно перемещаю другого человека/нормального парня с ежедневной планеты на другого аррайалиста, называемого безопасным землей.Ошибка с бесконечным циклом
Например, бесконечный бег ошибка может выглядеть следующим образом:
8
8
8
8
8
8
Пожалуйста, помогите мне найти проблему
import java.util.ArrayList;
public class GothamLikeAdventureTown
{
static int y=5;
static int x=3;
static ArrayList<Person> dailyPlanetStreet=new ArrayList<Person>();
static ArrayList<Person> safetyLand=new ArrayList<Person>();
static ArrayList<Person> unfortunatelyFatallyWoundedPeople=new ArrayList<Person>();
public static void rescue() {
int goodpos=0;
int randompos=(int)(Math.random()*dailyPlanetStreet.size());
for (int counter1=0; counter1<dailyPlanetStreet.size(); counter1++){
if (dailyPlanetStreet.get(counter1).name()!="Kent Clark") {goodpos=counter1; }
}
dailyPlanetStreet.add(randompos,dailyPlanetStreet.remove(goodpos));
}
public static void tosafety() {
System.out.println("Got here!");
int outer=12;
while (outer!=12){
int randompos=(int)(Math.random()*dailyPlanetStreet.size());
if ((dailyPlanetStreet.get(randompos).name()!="Clark Kent") && (dailyPlanetStreet.get(randompos).name()!="James Kalvin"))
{
System.out.println("Got into the loop!");
safetyLand.add(dailyPlanetStreet.remove(randompos));
outer=12;
} }
}
public static void remove(int deletepos) {
unfortunatelyFatallyWoundedPeople.add(dailyPlanetStreet.remove(deletepos));
}
public static void display(){
System.out.println();
System.out.println();
for (int z=0; z<dailyPlanetStreet.size(); z++)
{
if (dailyPlanetStreet.get(z) instanceof BadGuy) System.out.println("badguy");
else if (dailyPlanetStreet.get(z) instanceof GoodGuy) System.out.println("goodguy");
else if (dailyPlanetStreet.get(z) instanceof NormalGuy) System.out.println("normal guy");
else if (dailyPlanetStreet.get(z) instanceof Person) System.out.println("person");
}
}
public static void main(String args[])
{
String[] firstname= {"a ", "b", "c", "d","e","f","g","h","i","j"};
String[] lastname= {"k ", "l", "m", "n","o","p","q","r","s","t"};
while (y==x){
y=(int)(Math.random()*10);
x=(int)(Math.random()*10);
}
for (int z=0; z<10; z++)
{
if (z==y)
{
GoodGuy superMan=new GoodGuy("This looks like a job for superman!" , "A lot of them" , true , 10 , "Superman" , "Clark Kent" , "plumber" , 100 , 10,10);
dailyPlanetStreet.add(superMan); }
else if (z==x)
{
BadGuy superMan=new BadGuy("haha" , "Darkness" , true , 10 , "Batman" , "James Kalvin" , "farmer" , 100 , 10,10);
dailyPlanetStreet.add(superMan);
}
else if (((int)(Math.random()*2)+1)==1)
{
Person superMan=new Person(firstname[(int)(Math.random()*10)]+lastname[(int)(Math.random()*10)], "teacher", 100 , 10,10);
dailyPlanetStreet.add(superMan);
}
else
{
NormalGuy superMan=new NormalGuy(firstname[(int)(Math.random()*10)]+lastname[(int)(Math.random()*10)], "teacher", 100 , 10,10);
dailyPlanetStreet.add(superMan);
}
}
display();
while (dailyPlanetStreet.size()>2){
for (int counter=0; counter<dailyPlanetStreet.size(); counter++){
if (dailyPlanetStreet.get(counter).name()=="James Kalvin")
{
if ((counter==0) && (dailyPlanetStreet.get(1).name()=="Clark Kent")) {}
else if ((counter==0) && (dailyPlanetStreet.get(1).name()!="Clark Kent")) {System.out.println("yo"); remove(counter+1);display();rescue();}
else if ((counter==dailyPlanetStreet.size()-1) && (dailyPlanetStreet.get(dailyPlanetStreet.size()-2).name()=="Clark Kent")) {System.out.println("yo"); tosafety();rescue();display();}
else if ((counter==dailyPlanetStreet.size()-1) && (dailyPlanetStreet.get(dailyPlanetStreet.size()-2).name()!="Clark Kent")) {System.out.println("yo");remove(counter-1);tosafety();rescue();display();}
else if (dailyPlanetStreet.get(counter+1).name()=="Clark Kent") {System.out.println("yo");remove(counter-1);tosafety();rescue();display();}
else if (dailyPlanetStreet.get(counter-1).name()=="Clark Kent") {System.out.println("yo");remove(counter+1); tosafety();rescue();display();}
else if ((dailyPlanetStreet.get(counter-1).name()!="Clark Kent")&& (dailyPlanetStreet.get(counter+1).name()!="Clark Kent"))
{
if (((int)(Math.random()*2))==1) {System.out.println("yo");remove(counter+1); tosafety();rescue();display();}
else {System.out.println("yo");remove(counter-1); tosafety();rescue();display();}
}
}
}
System.out.println(dailyPlanetStreet.size());
}
System.out.println("hi");
}
}
[как сравнить 'String' в Java] (http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – zapl
Это не дубликат! OP было предложено задать другой вопрос, потому что тема изменилась. Пожалуйста, внимательно прочитайте, когда поставили под сомнение вопрос: -/ – Octoshape