Что происходит, то условие для вас, когда цикл равен
while (!command.equalsIgnoreCase("quit"))
, что по-английски означает, что, если команда не равна «выход», запустите этот цикл.
Внутри цикла команда никогда не устанавливается на «выход». Например, если я задаю входную строку как «abcde» и прошу удалить «c» в позиции 1. Затем ваша логика устанавливает здесь команду «удалить»
command = keyboard.nextLine();
, а затем выводит окончательное значение как «abde» , Теперь, когда цикл заканчивается, команда все еще «удаляет» и, следовательно, цикл выполняется снова.
Возможное решение - явно спросить пользователя, хочет ли он повторить попытку, используя цикл do while. Также просто совет, я вижу, что вы использовали nextInt. Желательно использовать nextLine сразу после следующего int. посмотрите на это по следующей причине: Java Scanner не ожидает ввода данных пользователем
, это то, что вы кодировали бы, если бы вы явно приняли согласие пользователя, если вы хотите выполнить больше команд:
public static void main (String[] args) throws java.lang.Exception
{
Scanner keyboard = new Scanner(System.in);
// Output Variables
String userInput = "";
// Variables
String removeChar = "", removeAllChar = "";
int removeIndex = 0;
// First Output
System.out.println("Enter the string to be manipulated");
userInput = keyboard.nextLine();
String command = "";
String retry = "";
// While loop
do {
// Output
System.out.println("Enter your command (reverse, replace first, replace last, remove all, remove)");
command = keyboard.nextLine();
if (command.equalsIgnoreCase("remove")) {
System.out.println("Enter the character to remove");
removeChar = keyboard.nextLine();
int totalCount = 0;
for (int j = 0; j < userInput.length(); j++) {
if (userInput.charAt(j) == removeChar.charAt(0)) {
totalCount = totalCount + 1;
}
}
System.out.println("Enter the " + removeChar
+ " you would like to remove (Not the index - 1 = 1st, 2 = 2nd, etc.):");
removeIndex = keyboard.nextInt();
keyboard.nextLine();
int currentIndex = 1;
if (removeIndex <= totalCount) {
for (int i = 0; i < userInput.length(); i++) {
if (userInput.charAt(i) == removeChar.charAt(0)) {
if (currentIndex == removeIndex) {
String firstpartOfString = userInput.substring(0, i);
String secondpartOfString = userInput.substring(i + 1, userInput.length());
System.out.println("The new sentence is " + firstpartOfString + secondpartOfString);
userInput = firstpartOfString + secondpartOfString;
break;
} else {
currentIndex = currentIndex + 1;
}
}
}
} else {
System.out.println("Can't find " + removeChar + " occuring at " + removeIndex + " int the string.");
}
// Remove All Code
} else if (command.equalsIgnoreCase("remove all")) {
System.out.println("Enter the character to remove");
removeAllChar = keyboard.next();
String newString = "";
for (int i = 0; i < userInput.length(); i++) {
if (userInput.charAt(i) != removeAllChar.charAt(0)) {
newString = newString + userInput.charAt(i);
}
}
userInput = newString;
System.out.println("The new sentence is " + userInput);
}
System.out.println("Do you want to go again?");
retry = keyboard.nextLine();
// Bracket for while loop
}while("yes".equalsIgnoreCase(retry));
}
Украденный от http://www.quirksmode.org/js/cookies.html#script
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toUTCString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
использование его:
var oldCount = parseInt(readCookie('hitCount'), 10) || 0;
createCookie('hitCount', oldCount + 1, 7);
, как указано в комментариях, необходимо бросить к интервалу, так как cookie хранятся и возвращаются как строки. Используя foo++
или ++foo
на самом деле бросит для Вас, но более безопасно знать точно, с чем Вы работаете:
var x = "5"; // x = "5" (string)
x += 1; // x = "51" (string!)
x += 5; // x = "515" (string!)
++x; // x = 516 (number)
Большая часть старой обработки cookie функционирует, я видел, что манипуляции простой строкой использования для хранения получения оценивают, как этот пример, можно пользоваться другими библиотеками, как cookie-js , маленькое (< 100 строк) утилита для доступа cookie.
я лично использую jQuery на своих проектах, и я использую Плагин Cookie jQuery , это действительно просто в использовании:
var cookieName = "increment";
if ($.cookie(cookieName) == null){
$.cookie(cookieName, 1, { expires: 10 });
}else{
var newValue = Number($.cookie(cookieName)) + 1;
$.cookie(cookieName, newValue, { expires: 10 });
}