【问题标题】:Comparing string length with strange output将字符串长度与奇怪的输出进行比较
【发布时间】:2022-11-22 06:42:42
【问题描述】:

所以我这里有一些代码。它的目的是比较用户输入的 2 个字符串,它应该输出第一个字符串是 > < 还是 = 第二个字符串。

它在大多数情况下都有效,除了当我输入两个短语如 gh 和 hi 时,它认为 gh 大于 hi。也许它正在查看实际字母的大小。我不确定。

import java.util.Scanner;
public class App {

    public static void main(String[] args){
        
        
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("Enter first phrase(s): ");
        String one = scanner.next();
        
        System.out.print("Enter Second phrase(s): ");
        String two = scanner.next();
        
        int length = one.compareTo(two);
        
    if(length > 0){
        System.out.print("String one is less than string two.");
    }else if (length < 0) System.out.print("String one is greater than string two.");
    
    else
    System.out.print("Both phrases are equal length");
        
        
        
    }
    
    }


    

【问题讨论】:

  • one.compareTo(two); 不给你字符串长度。要获得长度,请使用one.length()
  • 我必须使用 compareTo,因为它是作业要求的一部分。
  • compareTo 不返回长度差异,请阅读文档。
  • 您需要反转消息或条件的代码错误,因为当 if(length > 0) 意味着“字符串 1 大于字符串 2”时。不是“字符串一小于字符串二”。

标签: java


【解决方案1】:

compareTo() 方法按字典顺序比较两个字符串。

比较基于字符串中每个字符的 Unicode 值。

您需要为每个字符串调用 length() 方法来比较长度

if(one.length() > two.length()) ...

【讨论】:

  • 这是个好建议,但作业的要求是我使用 compareTo
  • 那你的assignment基本上是不可能的。 compareTo 没有告诉你关于长度的任何信息。
  • 第一步是重新阅读作业并确保他们只希望按长度比较它们——也许是长度优先,以词典顺序比较作为决胜局?如果它真的坚持要你用compareTo比较长度,从长度中提取一个Integer并调用compareTo,然后找一个不同的教授。 :)
  • 这并没有说明长度 - 他们想要词典比较。
  • 对于造成的误解,我深表歉意,我还在学习java。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
  • 2012-05-12
  • 2011-09-18
  • 1970-01-01
  • 2010-10-14
相关资源
最近更新 更多