#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);