Отдельный номер с помощью подстроки java

Я хочу создать программу на Java, которая получает номер из user_input и делает его валютным форматом ... Вот мой код

package Seperator_checker;

import java.util.Scanner;

public class Seperator {

    public static void main(String[] args) {
        Scanner number=new Scanner(System.in);
        System.out.print("Please Enter Your Number: ");
        String user_number=number.next();
        if (user_number.length()> 3) {
            user_number=user_number.substring(0,user_number.length()-3) + "," + user_number.substring(0,1);
            System.out.println("________________________________________");
            System.out.println("Your Currency Number Is: "+ user_number);
        }

    }

}

Пожалуйста, отформатируйте код правильно и укажите, что вам не подходит. Кроме того, что вы подразумеваете под «валютным форматом»? Что ожидается на входе и выходе?

Sergei Sirik 11.09.2018 21:43

По какой причине вы не можете использовать NumberFormat? Возможно, я неправильно читаю ваш код, но я не вижу, где, например, «1000000» будет правильно отформатировано в «1000000». Плюс в качестве валюты должны быть десятичные дроби и т. д. А локализацией тут ничего не занимается. См. Формат номера валюты Java.

KevinO 11.09.2018 21:47

пожалуйста, проясните свой вопрос и отформатируйте его должным образом.

The Scientific Method 11.09.2018 21:52

например, «1000000» будет отформатировано в «1000000»: да, именно это я хочу

meh rdad 12.09.2018 17:54
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
4
196
2

Ответы 2

Один спонтанный ответ, который я мог придумать, - это разбить строку на список символов, пройти по нему в обратном направлении и вставить , после каждого третьего шага, пока не дойдете до начала.

Псевдокод:

Convert String to Char List
goto end of List
counter = 0
while havent reached beginning of list
    counter += 1
    if counter == 3
        counter = 0
        insert ',' into List
        //maybe go back one here too depending on implementation of 
        //insert and which is the current element after inserting
    end if
    go one back one element in List
end while

извините, я понятия не имею, как писать псевдокод

к сожалению, я должен использовать метод подстроки для этой практики

meh rdad 12.09.2018 17:55

Если вам нужно использовать подстроку:

Я не знаю, как это выразить словами, поэтому вот код :)

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        int rest = input.length() % 3;
        if (rest == 0){
            rest = 3;
        }
        //add the "irregular" comma
        input = input.substring(0,rest) + "," + input.substring(rest);

        //add the rest
        for(int i = rest+1;i < input.length()-3; i+= 4){//4 because of the comma
            input = input.substring(0, i+3) + "," + input.substring(i+3, input.length()); 
        }
        System.out.println(input);
    }
}

(В основном сначала позаботьтесь о неправильной части в начале, а затем выполните шаги 3 (4 из-за запятых, которые вы вставляете) и вставьте запятые)

Надеюсь, это поможет :)

Другие вопросы по теме