2016-06-25 1 views
-2

산술 연산을 수행하고 있지만 값이 전혀 없더라도 연산 중에 가장 왼쪽 0을 유지하려고합니다. 내가 long 변수 long a = 03338023709이 지금계산 도중 왼쪽 0으로 유지

까지

내 작업;

내가 할 때 a + 1; 그것은 3338023710입니다.

0가 전혀 가치가없는하지만 난 03338023710하지 3338023710처럼 유지하기 원하는

결과 싶었다.

이 방법을 알려주십시오.

+2

BTW 앞에'0 '로 시작 숫자가 컴파일러에 의해 진수 정수로 해석됩니다 : 당신이 코드를 사용할 수 있습니다 바란 길이를 포함 stringLength라는 변수가 가정. 'long a = 03338023709'는 컴파일되지 않습니다. 'long a = 3338023709L'을 사용하고 @Arpan이 제안한대로 출력을 포맷하십시오. – Arjan

+0

-1을주는 사람은 누구입니까? 제 질문은 당신에게 이상하게 보입니까? –

+0

downvote 버튼에 대한 툴팁 텍스트는 * "이 질문은 연구 노력을 보이지는 않지만 명확하지 않거나 유용하지 않습니다"*입니다. 아마 그 중 하나입니다. 이미 수십 개의 유사한 질문을 내놓고있는 [ "가장 왼쪽 0 자바 유지"] (https://www.google.com/search?q=keep+the+leftmost+0+java)와 같은 간단한 Google 검색과 같은 노력 그리고 당신의 질문은별로 유용하지 않습니다. 아마도 당신이 충분한 문맥을 제공하지 않았거나 제공된 문맥이 현실적이지 않기 때문에 명확하지 않습니다. 숫자가 저장되는 방식이나 결과가 어떻게 보이는지 정말로 신경 써야합니까? 또는 위의 모든 것. 누가 알 겠어 :) – Arjan

답변

0

결과를 인쇄한다고 가정 해 봅시다. 그렇지 않으면 선행 0을 유지하는 것이 의미가 없습니다.

long a = 03338023709; 
a = a + 1; 
String string = valueOf(a); 
string = "0" + string; 

을하고 그것을 밖으로 인쇄 할 문자열을 사용 또는 무엇이든 당신이 그것을 필요

이 경우

, 당신은이 작업을 수행 할 수 있습니다.

+0

나는이 해결책을 생각하고 있었다. 그보다 더 좋은 사람이 있습니까? –

+0

나는 "더 나은 사람"이 무슨 뜻인지 잘 모르겠습니다. 인쇄에만이 기능을 사용하면 가장 빠르고 안전한 방법입니다. 그리고 나는 오랫동안 번호 033을 저장할 수 없다고 생각합니다 ... 그것은 즉시 33로 포맷합니다. – leonz

+0

실제로'long a = 03338023709' 또는'long a = 03338023709L'은 8 진 정수로 해석 할 것이기 때문에 컴파일 시간 오류 (정수가 너무 큼)가 발생합니다. 대답의 코드는 컴파일되지 않습니다. – Arjan

3

Formatter을 사용할 수도 있습니다.

String.format("%011d", a+1); 
03338023710 

이렇게하면 전체 길이를 11 문자로 유지할 수 있습니다 (이 경우 1을 더합니다).

그렇지 않으면, 각 번호의 왼쪽에 하나의 제로를 추가, 당신은 11

+0

바퀴를 다시 만들지 않고도 "길이"또는 숫자의 크기를 수정할 수 있으므로 숫자에 "0"을 추가하는 것보다 낫습니다. – Machinarius

-1

대신에 숫자 1을 더한 길이를 넣을 수 있습니다 나는 당신이 앞에 0 당신 때문에 유지한다고 가정 가치를 String으로 바꾸고 싶다면 (그렇지 않으면 의미가 없습니다). 쉬운 해결책은 먼저 평소와 같이 (예 : Integer.toString(a)) 값을 변환 한 다음 String이 원하는만큼 길어질 때까지 앞에 0을 추가하는 것입니다.

String s = Integer.toString(a); 
while(s.length() < stringLength){ 
    s = "0" + s; 
} 
관련 문제