2016-11-07 2 views
1

최대 소수점까지 나열하는 프로그램을 작성하려고하지만 사용자가 결정한 숫자는 포함하지 않습니다.마지막 숫자 다음에 쉼표를 제거하는 방법은 무엇입니까?

소수를 쉼표로 구분하고 싶지만 최종 소수 뒤에 쉼표를 제거 할 수 없습니다.

목록이 목록은해야 사용자가 수 (10)

을 선택합니다 말 : 내가 얻을 것은 2,3,5,7

: 2,3,5,7,

나는 이것이 아마도 많은 질문을 받겠지만, 도움이 될만한 것을 찾지 못하거나 나의 문제에 어떻게 적용 하는지를 이해하고있다.

누군가 올바른 방향으로 나를 가리킬 수 있습니까?

감사합니다.

Scanner scanner = new Scanner(System.in); 

    int i = 0; 

    int num = 0; 

    String primeNumbers = ""; 

    System.out.println("Pick a number, any number: "); 

    int n = scanner.nextInt(); 

    for (i = 1; i < n; i++) { 

     int counter = 0; 

     for (num = i; num >= 1; num--) { 

      if (i % num == 0) { 

       counter = counter + 1; 

      } 

     } 

     if (counter == 2) { 

      primeNumbers = primeNumbers + i + ","; 

     } 

    } 

    System.out.println("\nThe prime numbers up to " + n + " are: "); 

    System.out.println(primeNumbers); 
+0

필요 것과 결합 배열 목록을 사용합니다. 성능 병목 현상입니다. 'StringBuilder.append()'를 사용하고 for 루프 바깥에서'StringBuilder.delete()'를 사용하여 마지막 문자 (쉼표)를 삭제하십시오 – rafid059

+0

숫자를 int 목록에 저장할 수 있습니까? 그럼 당신은 @ System.out.println (list.stream(). map (String :: valueOf). 콜렉터 (Collectors.joining (","))); ' – dty

+0

도와 주셔서 감사합니다. @Rafiduzmann Sonnet, 선상에서 당신의 충고를 받아 들일 것입니다! – Keeron

답변

2

재 작성

primeNumbers = primeNumbers + i + ","; 

를 사용하여 마지막 문자를 제거 밤은 경우 .

primeNumbers.slice(0,primeNumbers.length-1); 
+0

감사합니다. 왜 이것이 작동하는지 이해할 수 있습니다! :) – Keeron

+0

또한보십시오 : http://stackoverflow.com/a/41282608/363573 – Stephan

2

짧은 답변 : 필요하지 않은 쉼표를 추가하지 마십시오.

일부 세부 사항 : 쉼표를 붙일 때 뒤집습니다.

은 같은 것을 할 :

for (blah) 
{ 
    if (primenumbers.length() > 0) 
    { 
     primenumbers += ","; 
    } 

    ... blah for next prime number. 

    primenumbers += nextPrimeNumber; 
} 
+0

입력 주셔서 감사합니다, 나는 그것을 시도하고 내 솔루션에 작동합니다. – Keeron

0

대신 쉼표가 마지막 숫자에 따라 필요없이, 당신이 마지막 번호 (문자열이 항상 쉼표없이 첫 번째 소수로 초기화 할 수 있습니다)에 선행해야한다 .

또는 문자열이 비어 있는지 확인할 수도 있습니다. 그냥이 그냥 primeNumbers 문자열에서 마지막 문자를 제거하는 것입니다하기 위해 다음과 같은 방법

if(!primeNumbers.isEmpty()) {primeNumbers+=".";} 
primeNumbers = primeNumbers + i; 
+0

도움을 주셔서 감사합니다, 좋은 간단한 솔루션! – Keeron

0

에 쉬운 방법을 primeNumbers = primeNumbers.substring(0, primeNumbers.length() - 1)

+0

입력 주셔서 감사합니다, 나는이 작품이 왜 작동하는지 좀 더 조사를해야합니다. – Keeron

0

번호 인쇄 전에이 부분을 추가하기 만하면됩니다.

if (primeNumbers.lastIndexOf(",") > 0) { 
     primeNumbers = primeNumbers.substring(0, primeNumbers.length() - 1); 
    } 

또는 사용을 인쇄 할 때 그냥 separtor 그것은 + 연산자를 사용하여 문자열을 CONCAT하는 것은 좋은 생각이 아니다

관련 문제