我试图反转输入的字符串,并输出"This is a Retindrument".当输入等于它的反方向时.

相反的部分是正确的,但它一直说它不相等,即使我输入了一个回文数字.我该怎么解决这个问题??

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    
    System.out.println("Enter a sequence of numbers: ");
    String sequence = scanner.next();
    
    char[] array = new char[sequence.length()];
    int numberIndex = 0;
            
    String reverse = "";
    
    for (int i = sequence.length() - 1; i >= 0; i--) {
        array[numberIndex] = sequence.charAt(i);
        
        numberIndex++;
    }
    
    for (int i = 0; i < sequence.length(); i++) {
        reverse += array[i];
    }
    
    System.out.println(reverse);
    
    if (sequence == reverse) {
        System.out.println("This number is a palindrome.");
    } else {
        System.out.println("This number is not a palindrome.");
    }
    
}

推荐答案

try 使用equals方法进行字符串比较.

而不是这个 if (sequence == reverse) {

用这个 if (sequence.equals(reverse)) {

原因是==判断引用相等性,即,对字符串的引用和指向JVM堆内存区域中的内存位置的"顺序"和"反向"被判断为相同的引用. 由于"Sequence"和"Reverse"是堆上不同对象的两个不同变量名,显然它们可以是相同的.

你不会想要判断的.

相反,您想要做的是,变量名"Sequence"引用的原始字符串是否与具有引用"Reverse"的反向字符串在内容上相同.

此equals()方法判断引用的两个对象是否不为空,它们的类型相同且内容相同.

如果以上所有参数都相同,则equals将返回True,否则返回False.

因此,这里应该使用equals()方法.

Java相关问答推荐

如何为具有多对多关系的实体的给定SQL查询构建JPA规范?

Android Studio—java—在onBindViewHolder中,将断点和空白添加到BackclerView中

Quarkus keycloat配置不工作.quarkus. keycloak. policy—enforcer. enable = true在. yaml表示中不工作

无法处理批处理侦听器中的反序列化异常

使用意向过滤器从另一个应用程序启动服务

无法在WebSocket onMessage中捕获错误

DTO到实体,反之亦然,控制器和服务之间的哪一层应该处理转换?

我需要生成一个文件来整合每个特性执行的所有JSON结果

为什么不应用类型推断?

第三方Jar pom.xml

与不同顺序的组进行匹配,不重复组但分开

如何在代码中将行呈现在矩形前面?

判断重复的两个二维表算法?

在Java中将.GRF转换为图像文件

Bash数组的单引号元素并使用空格连接

为什么Spring要更改Java版本配置以及如何正确设置?

OpenJDK20:JEP434:Foreign Function&;内存API(第二次预览)

ResponseEntity.控制器截断响应的JSON部分

try 添加;按流派搜索;在Web应用程序上,但没有;I don’我不知道;It’这个代码错了

Xml Reader 将 BMP 外部的字符解析为代理项对,这会导致无效的 xml