еще раз. Я продолжаю получать IllegalStateException
, когда пытаюсь выполнить задачу после одного хода. В частности, упоминание о том, что задача уже запланирована или отменена. Вы знаете, как это исправить? Вот некоторый соответствующий код.
public class Human_Agent implements GipfPlayable {
String[] edgeSpots;
String[] columns;
Random rng;
GipfGame mg;
//int turn = 0;
String str;
Timer t;
Integer val;
Integer myDir;
public Human_Agent(GipfGame g) {
this.edgeSpots = g.getEdgeSpots();
this.columns = g.getColumns();
rng = new Random(37);
//turn = 0;
}
TimerTask task1 = new TimerTask()
{
public void run()
{
if (str.equals(""))
{
System.out.println("You did not input a valid location.");
System.exit(0);
}
}
};
TimerTask task2 = new TimerTask()
{
public void run()
{
if (val == null)
{
System.out.println("You did not input a valid direction.");
System.exit(0);
}
}
};
public String getUserInput() throws Exception
{
t = new Timer();
t.schedule(task1, 5*1000);
Scanner scan = new Scanner(System.in);
System.out.print("Please provide a starting location: ");
String startLocation = "";
String x = scan.nextLine();
str = x;
int dirE = 0;
//t.cancel();
// Timer t2 = new Timer();
if (isItValidLocation(x))
{
startLocation = x;
t.cancel();
t = new Timer();
t.schedule(task2, 10*1000);
//t.scheduleAtFixedRate(task2, 5000, 5*1000);
System.out.print("\n Now, provide a number to move the piece");
dirE = scan.nextInt();
t.cancel();
}
else
{
System.out.println("Invalid Start location.");
t.cancel();
}
// scan.close();
// t.cancel();
return str + " " + Integer.toString(dirE);
}
@Override
public String makeGipfMove() {
String s;
try
{
s = getUserInput();
}
catch(Exception e)
{
String startLocation = edgeSpots[rng.nextInt(edgeSpots.length)];
Integer dir = rng.nextInt(6);
s = startLocation + " " + Integer.toString(dir);
e.printStackTrace();
}
// if ((mg.makeMove(x, dirE)) == false)
// {
// System.out.println("Can't move here.");
// }
//mg.makeMove(x, dirE);
// Integer dir = rng.nextInt(6);
//System.out.println("GIPHS REMAINING: " + )
return s;
}
public boolean isItValidLocation(String a)
{
boolean v = false;
System.out.println("YOU ENTERED: " + a);
for (int i = 0; i < edgeSpots.length; i++)
{
System.out.println(edgeSpots[i]);
if ((edgeSpots[i].equals(a)) && (v != true))
{
v = true;
}
}
System.out.println(v);
return v;
}
}
Этот код выполняет игру Gipf с человеком-агентом.
Похоже, ваш пост в основном кодовый; пожалуйста, добавьте еще некоторые детали. (Netbeans должен избавиться от этого, если вы добавили подробности о своем коде!)