LillyLeaf Ответов: 1

Как остановить цикл при вводе "0" в java?


Я хочу сделать программу, которая хорошо скажет мне, что такое пользовательский ввод, она должна сказать мне, является ли это палиндром или нет. Когда пользователь вводит 0, я хочу, чтобы он вышел из цикла. Пожалуйста, помогите мне сделать это! Спасибо :D

Что я уже пробовал:

import java.util.Scanner;
class Palindrome
{
     public static void main(String args[])
     {
		 Scanner in = new Scanner(System.in);
		 
		 boolean isPalindrome = true;
		  
		  while (isPalindrome)
		  {
			  String reverseString="";
			  Scanner scanner = new Scanner(System.in);
			  
			  System.out.println("Enter a positive integer (0 to quit):");
			  String inputString = scanner.nextLine();
			  
			  int length = inputString.length();
			  
			  int i = length-1;
			  while ( i >= 0)
			  {
				  reverseString = reverseString + inputString.charAt(i);
				  i--;
			  }
			  
			  if (inputString.equals(reverseString))
			  System.out.println(inputString + " is a palindrome.");
			  else
			  System.out.println(inputString + " Input string is not a palindrome.");
			  
		  }
	  }
}

Mohibur Rashid

является
Мадам, что такое палиндром?

LillyLeaf

да

Mohibur Rashid

В этом случае вам придется заниматься делом.

1 Ответов

Рейтинг:
6

Mohibur Rashid

Решение:

if(inputString.compareTo("0") == 0) 
  return;
// or
  break;


Я знаю, что вы находитесь в процессе обучения. Позвольте мне объяснить, почему следующий способ написания java является наихудшим

ПЛОХОЙ КОД
while ( i > 0) {
    reverseString = reverseString + inputString.charAt(i);
    i--;
}


Почему?
По умолчанию java concat string использует класс StringBuilder класс(за исключением некоторых случаев буквального значения). Итак, если вы пишете
String x = a + b;

Java будет обрабатывать это как
StringBuilder temp_var = new StringBuilder();
temp_var.add(a);
temp_var.add(b);
x = temp_var.toString();


Это выглядит чистым на строке, которая написана вне цикла. Но что произойдет, если вы используете это внутри цикла? Он будет создавать объект для каждой операции.


LillyLeaf

Спасибо Вам за вашу удивительную помощь! :)