Я хочу создать программу на 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);
}
}
}
По какой причине вы не можете использовать NumberFormat
? Возможно, я неправильно читаю ваш код, но я не вижу, где, например, «1000000» будет правильно отформатировано в «1000000». Плюс в качестве валюты должны быть десятичные дроби и т. д. А локализацией тут ничего не занимается. См. Формат номера валюты Java.
пожалуйста, проясните свой вопрос и отформатируйте его должным образом.
например, «1000000» будет отформатировано в «1000000»: да, именно это я хочу
Один спонтанный ответ, который я мог придумать, - это разбить строку на список символов, пройти по нему в обратном направлении и вставить ,
после каждого третьего шага, пока не дойдете до начала.
Псевдокод:
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
извините, я понятия не имею, как писать псевдокод
к сожалению, я должен использовать метод подстроки для этой практики
Если вам нужно использовать подстроку:
Я не знаю, как это выразить словами, поэтому вот код :)
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 из-за запятых, которые вы вставляете) и вставьте запятые)
Надеюсь, это поможет :)
Пожалуйста, отформатируйте код правильно и укажите, что вам не подходит. Кроме того, что вы подразумеваете под «валютным форматом»? Что ожидается на входе и выходе?