2017-03-21 2 views
2

사용자에게 int (스캐너 사용) 입력을 요청하는 프로그램이 있습니다. 나는 프로그램이 7 자리 만 받아들이기를 원한다. 입력이 7 자리가 아니면 7 자리로 자릅니다. 내가 문제로 실행하면 그래서 그건JAVA 자르기 스캐너 입력

for(int i = 0; i > 7; i++) 
    { 
    numbers[i] = input1 % 10; 
    input1 /= 10; 
    System.out.print(numbers[i]); 
    //stores the numbers backwards so if input was 123, first element would be 3, 2, 1 
    } 

: 번호가 12345678 인 경우

그래서 나는

1234567가 현재 나는 다음과 같은 배열에 입력을 저장하고되고 싶은 것 12345678을 입력하면 8765432로 저장됩니다. 대신 7654321로 저장하고 싶습니다. 누구든지 1234567 또는 7654321와 같은 수의 저장소를 만드는 내 루프에 대한 어떤 제안이있는 경우

, 꽤 도움이 될 것입니다 :)

답변

2

쉬운 방법은 예 아니오 경우, 7 첫 번째 문자를 유지 아무것도하지 않는 경우, length>7 여부를 확인하는 String 에 입력을 저장 할 수 있습니다)

String input1 = sc.nextLine(); 
if(input1.length>7){ 
    input1 = input1.substring(0,7); 
} 
int input = Integer.valueOf(input1); 

그것은 각을 저장하는 것보다 분명히 더 쉽다 숫자를 개별적으로 입력하거나 반복);

을 '?'기호로 편집하십시오. ('?' definition and explication)

String input1 = sc.nextLine(); 
int input = Integer.valueOf(((input1.length>7) ? input1.substring(0,7) : input1); 

이 일본어 입력을

+0

감사드립니다. – megabowser56

+0

@ megabowser56 No probs;) 다른 방법을 추가합니다. 첫 번째 방법보다 쉽습니다. – azro

1

글쎄, 몇 가지가 있습니다.

우선, ArrayList을 사용하고 int와 같은 기본 유형이 아닌 Integers을 사용하는 것이 더 좋을 것이라고 생각합니다. ArrayList을 사용하는 경우 .add(Integer e)을 입력하면 다음 Integer을 목록에 넣을 수 있습니다.

다음 항목은 for(int i = 0; i > 7; i++) 대신 for(int i = 0; i < 7; i++)이되어야합니다. 차이점을 보시겠습니까? i++을 사용하는 경우 >이 아닌 <으로 루프를 제한하십시오.

입력을 반전하는 방법은 매우 간단하지만 대신 i--을 사용하십시오.하지만 직접 생각해보십시오.

+0

감사 내 오류 잡기! – megabowser56

-1

공공 정적 무효 trauncateNumber 머물 것이다 input1이 값을 변경할 수 있도록 (INT 입력 1) {

String Str=Integer.toString(input1); 
//int changeValue=0; 
if(Str.length()>7){ 
    //Str=Integer.toString(input1); 
    Str=Str.substring(0, 7); 
    input1=Integer.parseInt(Str); 
} 
//int changeValue= 
System.out.println(input1);  

}