Я сейчас борюсь с кодом. Проблема в основном возникает с массивом и пытается добраться обратно.
Для этого файла требуется только метод main, который выполняет следующие действия, пока пользователь не введет команду «quit»:
• Предлагает пользователю указать URL-адрес для посещения, для возврата (только когда это возможно) или для выхода
• Посещает и отображает введенный URL
• Возвращается и отображает ранее посещенный URL (если возможно)
• Если пользователь вводит «назад», когда нет страницы для возврата, должно отображаться соответствующее сообщение.
Вот пример вывода:
Введите URL или «выйти»: назад
Нет URL для возврата на
Введите URL или «выйти»: http://www.wwe.com
Текущий URL: http://www.wwe.com
Введите URL или «выйти»: назад
Нет URL для возврата на
Текущий URL: http://www.wwe.com
Введите URL или «выйти»: http://www.amazon.com
Текущий URL: http://www.amazon.com
Введите URL, «назад» или «выйти»: http://www.google.com
Текущий URL: http://www.google.com
Введите URL, «назад» или «выйти»: назад
Текущий URL: http://www.amazon.com
Введите URL, «назад» или «выйти»: назад
Текущий URL: http://www.wwe.com
Введите URL или «выйти»: выйти
Вот мой текущий код:
public class BrowsingHistory
{
public static void main(String [] args)
{
Scanner url = new Scanner(System.in);
String web = "";
String currentURL = "";
Stack<String> myStack = new Stack<>();
System.out.print("Enter a URL or \"quit\": ");
web = url.nextLine();
while (!web.contains("quit"))
{
System.out.println();
System.out.print("Enter a URL, \"back\", or \"quit\": ");
web = url.nextLine();
if(web.equals("back") && myStack.isEmpty())
{
System.out.println("No URL to go back to");
}
else if(!web.equals("back"))
{
myStack.push(web);
System.out.println("Current URL: " + myStack.peek());
}
else
{
System.out.println("No URL to go back to");
System.out.println("Current URL: " + myStack.pop());
}
}
}
}
Вот тесты, которые нужно пройти, чтобы прояснить:
@Test
void testMain()
{
setInput("back\nhttp://www.uwec.edu\nback\nhttp://www.amazon.com\nhttp://. w.google.com\nback\nback\nquit\n");
BrowsingHistory.main(null);
String mainOutput = outContent.toString();
Scanner driverOut = new Scanner(mainOutput);
String outputLine = getNextOutputLine(driverOut);
assertEquals("Enter a URL or \"quit\":", outputLine.substring(0, outputLine.indexOf(":")+1).trim(), "BrowsingHistory doesn't run as expected (initial prompt problem)");
Ошибка в этой строке ниже:
assertEquals("No URL to go back to", outputLine.substring(outputLine.indexOf(":")+1).trim(), "BrowsingHistory doesn't run as expected (can't go back issue)");
остальное проходит:
outputLine = getNextOutputLine(driverOut);
assertEquals("Enter a URL or \"quit\":", outputLine.substring(0, outputLine.indexOf(":")+1).trim(), "BrowsingHistory doesn't run as expected (prompt problem)");
assertEquals("Current URL: http://www.uwec.edu", outputLine.substring(outputLine.indexOf(":")+1).trim(), "BrowsingHistory doesn't run as expected (current url problem)");
outputLine = getNextOutputLine(driverOut);
assertEquals("Enter a URL or \"quit\":", outputLine.substring(0, outputLine.indexOf(":")+1).trim(), "BrowsingHistory doesn't run as expected (prompt problem)");
assertEquals("No URL to go back to", outputLine.substring(outputLine.indexOf(":")+1).trim(), "BrowsingHistory doesn't run as expected (can't go back issue)");
outputLine = getNextOutputLine(driverOut);
assertEquals("Current URL: http://www.uwec.edu", outputLine.trim(), "BrowsingHistory doesn't run as expected (current url problem)");
outputLine = getNextOutputLine(driverOut);
assertEquals("Enter a URL or \"quit\":", outputLine.substring(0, outputLine.indexOf(":")+1).trim(), "BrowsingHistory doesn't run as expected (prompt problem)");
assertEquals("Current URL: http://www.amazon.com", outputLine.substring(outputLine.indexOf(":")+1).trim(), "BrowsingHistory doesn't run as expected (current url problem)");
outputLine = getNextOutputLine(driverOut);
assertEquals("Enter a URL, \"back\", or \"quit\":", outputLine.substring(0, outputLine.indexOf(":")+1).trim(), "BrowsingHistory doesn't run as expected (prompt problem)");
assertEquals("Current URL: http://www.google.com", outputLine.substring(outputLine.indexOf(":")+1).trim(), "BrowsingHistory doesn't run as expected (current url problem)");
outputLine = getNextOutputLine(driverOut);
assertEquals("Enter a URL, \"back\", or \"quit\":", outputLine.substring(0, outputLine.indexOf(":")+1).trim(), "BrowsingHistory doesn't run as expected (prompt problem)");
assertEquals("Current URL: http://www.amazon.com", outputLine.substring(outputLine.indexOf(":")+1).trim(), "BrowsingHistory doesn't run as expected (current url problem)");
outputLine = getNextOutputLine(driverOut);
assertEquals("Enter a URL, \"back\", or \"quit\":", outputLine.substring(0, outputLine.indexOf(":")+1).trim(), "BrowsingHistory doesn't run as expected (prompt problem)");
assertEquals("Current URL: http://www.uwec.edu", outputLine.substring(outputLine.indexOf(":")+1).trim(), "BrowsingHistory doesn't run as expected (current url problem)");
outputLine = getNextOutputLine(driverOut);
assertEquals("Enter a URL or \"quit\":", outputLine.trim(), "BrowsingHistory doesn't run as expected (prompt problem)");
assertFalse(driverOut.hasNext(), "BrowsingHistory doesn't run as expected (quit problem)");
driverOut.close();
}