2013-02-06 5 views
-1

while 루프에 문제가 있습니다. 프로그램은 사용자에게 이름을 묻고 사용자가 입력을 한 후에 입력을 인쇄 할 횟수를 묻습니다.Do-while 루프가 작동하지 않습니다.

내가 꽤 시간 내 동안 루프에 붙어 있었어요 만 나는 같은 것을 할 경우 작동하게 할 수 있습니다 } while (antal > some random number)

package uppg2; 

import java.util.Scanner; 

public class Uppg2 { 

    public static void main(String[] args) { 

     Scanner name = new Scanner(System.in); 
     Scanner ant = new Scanner(System.in); 
     int antal; 
     String namn; 
     System.out.print("Whats your name?: "); 
     namn = name.nextLine(); 

     System.out.print("How many times u wanna print ur name?: "); 
     antal = ant.nextInt(); 
     do { 

      System.out.print(namn); 

     } while (????); 
     antal++; 
     namn = null; 
     antal = 0; 
    } 
} 
+2

for 루프에 어떤 문제가 있습니까? –

+0

'do-while'이어야하고, for-loop가 쉬울 것이고 while-loop가 더 안전 할 것입니다. (for int i = 0; i MadProgrammer

+1

@MadProgrammer 숙제 문제는 do while 루프가 필요하다고 가정합니다. –

답변

2

이것은 다른 제안 된 것처럼 for 루프의 유스 케이스 일 것입니다. 하지만 while 루프를 사용하여 주장하는 경우 : 루프가 끝날 때 더 이상 때 ​​

int counter = 0; // a variable which counts how often the while loop has run 

do { 
    System.out.print(namn); // do what you want to do 
    counter++     // increase the counter 
} while (counter < antal)  // check if the desired number of iterations is reached 

당신은 카운터 변수없이 당신은 또한 그것을 할 수 있습니다, antal의 값을 필요가없는 경우 그냥 모든 루프 안탈 줄이고 이 도달하면 확인 0

do { 
    System.out.print(namn); 
    antal--; 
} while (antal > 0) 
+1

예, 제 선생님이 잠시 사용을하라고 말씀 하셨고, 멀리서 공부하고 있기 때문에 나는 해결책을 묻기 위해 어떤 동급생도 아니 었습니다. 그래서 나는 사람들에게 왔습니다 : P – Krappington

0

가 여기에 유사한 문제에 대한 해결책을. 당신이 당신의 문제로 번역 할 수없는 경우 참조 :

// How many times to I want to do something? 
int max = 40; 
for (int i = 0; i < max; i++) { 
    // Do something! 
} 
3

나는 개인적과 같이 루프를 사용합니다 :

for(int i = 0 ; i < antal; i++){ 
    System.out.println(namn); 
} 
+2

antal은 int입니다 ... parseInt를 수행 할 필요가 없습니다. – TofuBeer

+0

네가 맞아, 나는 그것을 알아 차리지 못했다. 나는 그것을 문자열이라고 생각했다. –

2

당신은 아래로 antal (antal--)를 셀 수는 1을 안 때까지 그래도 antal의 값을 삭제해도 괜찮은지 확인하십시오.

1
package uppg2; 

import java.util.Scanner; 

public class Uppg2 { 

public static void main(String[] args) { 

    final Scanner in = new Scanner(System.in); 
    int antal; 
    String namn; 
    System.out.print("Whats your name?: "); 
    namn = in.nextLine(); 

    System.out.print("How many times u wanna print ur name?: "); 
    antal = in.nextInt(); 
    int i = 0; 
    while(i < antal){ 

      System.out.print(namn); 
      i++; 

    } 
    in.close(); 
} 
} 

말해 주면. 기본적으로 원하는 시간만큼만 인쇄되도록 증분 카운터가 필요합니다. 0부터 계산하기 때문에 인쇄 시간과 같을 때까지 계속 진행할 필요는 없지만 여전히 인쇄 시간 동안 유지됩니다.

1

당신이

는 루프 루프 뭔가를 만들 것입니다 귀하의 DO-while 루프 내부에 증가되는 카운터가 있고, 그 값에 대한 귀하의 비교를 수행 할 것 like :

do-while 루프이기 때문에 사용자가 0을 입력하더라도 적어도 한 번 이상 이름을 항상 인쇄합니다. 이를 방지하려면 다른 응답자의 설명에 따라 for 또는 while 루프를 사용하거나 System.out.println 호출에서 if 조건을 사용하여 antal이 0인지 확인해야합니다. 당신이 마지막에 무엇 안탈 상관하지 않는 경우

또한, 당신은 TofuBeer의 솔루션을 사용할 수 있습니다.

+0

+1 나는 이것을 생각합니다. OP가 무엇을 찾고 있어야합니다. – Smit