Как я могу вычислить разницу символов между двумя строками и сделать их равными в Java?

#java

#java

Вопрос:

Я начинаю с Java в школе, и мне дали это упражнение, в котором я застрял. У меня есть два числа, и я должен найти разницу символов между этими двумя, и чтобы сделать их равными по количеству символов, я должен добавить много нулей в качестве отсутствующих символов. Так, например, если у меня есть 10 и 100, выходные данные будут 010 и 100. Я хотел бы получить поддержку в понимании того, как, имея строку.по длине этих двух чисел я могу определить, что символов не хватает, и добавить 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());

    }

}
  

Комментарии:

1. while(n1.length<n2.length){n1 =»0″;}

Ответ №1:

Я не собираюсь давать вам код решения, но я предоставлю вам информацию о строке.метод длины с контекстом.

Предположим, у вас есть две переменные, которые являются строками:

 n1 = "18214120"
n2 = "100"
  

n1.length () даст 8, а n2.length () даст 3. С помощью этой информации вы знаете, что n1 — это число, которое содержит больше символов, и вы хотите, чтобы n2 дополнялось 0, пока n2.length () = n1.length (), сколько нулей вы добавите слева от n2?

Ну, количество нулей для заполнения должно быть равно:

   n1.length()-n2.length() 
  

8-3=5.

Итак, добавив 5 0 слева от n2, получится 00000100, что, я полагаю, вам и нужно.

Ответ №2:

получаем недостающие символы

 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
  }
}
  

Ответ №3:

При изменении строковых объектов важно знать тот факт, что вы можете использовать оператор для объединения двух строк вместе. Например:

 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 раз, где X — разница в длине. для этого можно использовать цикл 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);