我正在尝试创建一个java程序来反转给定的字符串,每次迭代时,与反向字符串进行比较然后打印pass如果匹配则其他失败。
我的节目是:
package sss;
import java.util.Scanner;
public class ssi {
/**
* @param args
*/
public static void main(String[] args) {
String original,reverse="";
Scanner sc=new Scanner(System.in);
int ascii11,ascii12,ascii13,ascii14;
System.out.println("enter the string to be reversed");
original=sc.next();
int length=original.length();
for(int i=length-1;i>=0;i--)
{
reverse=reverse+original.charAt(i);
}
System.out.println(reverse);
//System.out.println(original);
for(int j=0;j<original.length()-1;j++)
{
ascii11=original.charAt(j);
ascii12=original.charAt(j+1);
ascii13=reverse.charAt(j);
ascii14=reverse.charAt(j+1);
if(Math.abs(ascii11-ascii12) == Math.abs(ascii13-ascii14))
{
System.out.println("pass");
}
else
{
System.out.println("fail");
}
}
// TODO Auto-generated method stub
sc.close();
}
}
这里每次for循环迭代我都会为每对数字传递或失败,但我希望o / p只打印通过或失败ONCE。
任何人都可以帮助我...
答案 0 :(得分:1)
示例代码:
import java.util.Scanner;
public class PalindromeChecker {
public static void main(String[] args) {
String original;
Scanner sc = new Scanner(System.in);
System.out.print("Enter the string to be reversed: ");
original = sc.next();
int halfLength = original.length()/2;
int lastIndex = original.length() - 1;
int i;
for(i = 0; i < halfLength; i++) {
if(original.charAt(i) != original.charAt(lastIndex - i)) {
System.out.println("Fail!");
break;
}
}
// Managed to match all characters
if(i == halfLength) {
System.out.println("Pass!");
}
sc.close();
}
}
<强>输入/输出:强>
Enter the string to be reversed: banana
Fail!
Enter the string to be reversed: RADAR
Pass!
Enter the string to be reversed: asdwwdsa
Pass!
所以我的想法是:
答案 1 :(得分:0)
您的print语句位于循环内部,因此每个循环的打印“通过”或“失败”。您应该使用标志来检查所有ascii字符是否相同。然后检查循环外标志的状态
或强>
使用StringBuffer它有一个内置的方法来反转字符串。
StringBuffer input = new StringBuffer("Your String to reverse");
String reverse = input.reverse().toString();
if(input.equals(reverse))
System.out.println("pass");
else
System.out.println("fail");
答案 2 :(得分:0)
您需要使用pass或fail boolean值标记原始字符和反转字符的每个比较。显然,如果其中任何一个标记为失败,则可以终止算法并打印失败。如果for循环继续向右传递,则在for循环之外打印一次。
答案 3 :(得分:-1)
将if
条件移出for
循环。
for(int j=0;j<original.length()-1;j++)
{
ascii11=original.charAt(j);
ascii12=original.charAt(j+1);
ascii13=reverse.charAt(j);
ascii14=reverse.charAt(j+1);
}
if(Math.abs(ascii11-ascii12) == Math.abs(ascii13-ascii14))
{
System.out.println("pass");
}
else
{
System.out.println("fail");
}