Странный результат при попытке добавить символ после целого числа, а затем вывести результат - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь создать простой калькулятор для закона Ома.Таким образом, идея заключается в том, что вы можете заполнить 2 переменные, а затем она вычислит третью переменную.

Когда я создавал эту программу, я обнаружил небольшую проблему, и я не понимаю, как это происходит, и, к сожалению, я не могу найти ответ.

Я попытался напечатать строку, где отображается полный расчет.Итак, 2 переменные, которые заполнил пользователь, и ответ.После переменной для Ohm (в данном примере 'R') должен быть напечатан правильный символ.

Как показано в примере ниже, единственный способ добавить символ после переменной - это сначала добавить пустую строку ("").В противном случае Unicode будет добавлен к переменной?!

Я сделал быстрый пример, чтобы показать мою проблему:

public class Main {

    public static void main(String[] args) {
        float R = 2.54f;
        float U = 4.00f;
        float I = R / U;
        char ohm = '\u2126';
        System.out.println(R + "" + ohm + " (R) / " + U + "V (U) = " + I + "A (I)");
        System.out.println(R + ohm + " (R) / " + U + "V (U) = " + I + "A (I)");
    }
}

Результат в консоли:

2.54Ω(R) / 4,0 В (U) = 0,635 А (I)

8488,54 (R) / 4,0 В (U) = 0,635 А (I)

Как видно, второеprint не показывает символ Ом, но добавляет значение в переменную 'R'.Надеюсь, я достаточно ясно изложил свой вопрос.

Заранее спасибо.

1 Ответ

0 голосов
/ 04 октября 2018

R + ohm выполняет числовое сложение float и char (это целочисленный тип).Следовательно, вы видите результат float вместо ожидаемой конкатенации строк.Результат float, который вы видите, равен 8486 + 2.54 (поскольку 8486 - это десятичное значение шестнадцатеричного числа 2126).

В своем первом операторе println вы избегаете этого, объединяя String ("") на float, что приводит к String.Затем Ом char соединяется с этим String.

. Вы также можете начать с пустого String, чтобы получить желаемый результат:

System.out.println("" + R + ohm + " (R) / " + U + "V (U) = " + I + "A (I)");
...