当前位置: 首页 > 知识库问答 >
问题:

如何计算两个字符串之间的字符差异,并使它们在Java相等?

孟福
2023-03-14

我在学校开始Java,我被要求做这个练习,但我卡住了。我有两个数字,我必须找到这两个数字之间的字符差异,为了使它在字符数量上相等,我必须添加许多零作为缺失的字符。所以例如,如果我有10和100,输出将是010和100。我想得到支持,了解如何在这两个数字的string.length,我可以检测到缺少的字符并添加0。

import java.util.Scanner;

public class exercise {

    public static void main(String[] args) {
        Scanner myObj = new Scanner(System.in);
        System.out.println("Enter n1");
        System.out.println("Enter n2");


        String n1 = myObj.nextLine();
        String n2 = myObj.nextLine();
        System.out.println("n1 is: " + n1);
        System.out.println("n2 is: " + n2);
        System.out.println("length n1: "+ n1.length());
        System.out.println("length n2: "+ n2.length());

    }

}

共有3个答案

司空劲
2023-03-14

更改字符串对象时需要知道的一个重要事实是,可以使用操作符将两个字符串连接在一起。例如:

String s1 = "hello";
String s2 = "world";
String combined = s1 + s2;
System.out.println(combined);

这将输出:

helloworld

如果要将数字0前置为字符串,则可以使用以下代码

String zeroAdded = "0" + someString;

因为您不想为添加的每个零创建新字符串,Java允许您连接一个字符串并将结果分配给它自己。上面的示例也可以写成:

String someString = "0" + someString; //The value of someString will be overwritten with the result of the concatenation.

现在你只需要重复这个步骤X次,其中Xis是长度的差值。可以使用for循环或while循环。选择哪一个是一个完整的主题本身,我建议通过谷歌搜索这些术语来获得示例和比较。但对于这类练习,它们在性能或可读性方面的差异可以忽略不计。下面是for循环的一个示例:

int difference = Math.abs(n1.length() - n2.length()) //Taking absolute value, because we don't know which string was the longest.
for(int i = 0; i < difference; i++){
    if(n1.length() > n2.length()){ //n1 is longer, so prepend the 0 to n2
         n2 = "0" + n2;
    }
    if(n1.length() < n2.length()){ //n2 is longer, so prepend the 0 to n1
         n1 = "0" + n1;
    }
}

System.out.println("n1 is now: " + n1);
System.out.println("n2 is now: " + n2);
章锦
2023-03-14

找到丢失的字符

int charsMissing = n1.length() - n2.length();

添加额外的零作为它的缺失的次数。

if (charsMissing > 0) // check if there actually are missing in  {
  for (int i = 0; i < charsMissing; i++) {
  n1 = "0" + n1
  }
}
舒斯伯
2023-03-14

我不会给出解决方案代码,但我会提供有关字符串的信息。带有上下文的长度方法。

假设您有两个字符串变量:

n1 = "18214120"
n2 = "100"

n1.length()将产生8,n2.length()将产生3。通过这些信息,您知道n1是包含更多字符的数字,并且您希望n2用0填充,直到n2.length()=n1.length(),您将在n2的左侧添加多少个零?

到pad的零数必须等于:

  n1.length()-n2.length() 

8-3=5.

所以在n2的左边加上5个0,将使它成为00000100,我相信这就是你想要的。

 类似资料:
  • 我有两个json字符串,我想比较string2和string1,并打印它们的不同之处。 例如: expectedJson:{Products:{Product:[{Product_name:“string”“unit_cost:“string”}],“Region:[“string”]} inputJson:{Products:{Product:[{Product_name:“string”“un

  • 我错过了什么?

  • 问题内容: 这是我想要的行为: 问题答案: 我认为该示例将针对您的特定情况工作,而不会造成太多麻烦,也不会遇到python软件版本(请升级至2.7)的互操作性问题: 输出: 进行一些调整,您就可以得到想要的…。如果有帮助,请告诉我:-) 更新资料 您还可以使用以下命令: 输出: 更新2 您可以这样修改代码: 输出:

  • 我想比较两个用户定义的字符串,并输出两个字符串之间共享的字符数,而不用使用数组。然后我需要输出这些字符中的每一个。我用扫描仪理解用户输入的部分,但后来我就不知所措了。 例如,string1中的"hamper"和string2中的"was"将返回: 共享字符数=5 共享字符 以下是我到目前为止的情况。不过,它会在单独的一行上打印每个字符。有没有一种不用数组的方法可以像上面那样将它们全部列在一行中

  • 下面是我的解决方案,但我不清楚“删除”的情况下代码应该是什么样子 删除字符的代码应该是什么样子的? 更新-添加了更多的示例 下面是Dmitry和Ingen答案的比较:https://dotnetfiddle.net/mjqdao

  • 问题内容: 如果我在mysql中有两个字符串: 有没有办法使用MYSQL获得这两个字符串之间的相似性百分比?例如,这里有3个单词是相似的,因此相似度应为: count(@a和@b之间的相似单词)/(count(@a)+ count(@b)-count(intersection)) 和结果是3 /(4 + 4-3)= 0.6 高度赞赏任何想法! 问题答案: 您可以使用此功能(从http://www.