2017-12-05 3 views
2

저는 초보자 자바 프로그래머입니다. 기초적인 youtube 비디오 및 오버 플로우 포럼에서 공부하고 있으며, for 루프 프로그램을 사용하도록 요청한 교과서 용지에 관한 질문을 만났습니다 나는 나 자신을 테스트하기 위해 그것을 밖으로 시도해야한다고 생각 각각의 빈for 루프에서 수식을 어떻게 사용할 수 있습니까?

Number Square Cube (n+1)/(2n-18) 
______________________________________ 
1   #  #   # 
2   #  #   # 
3   #  #   # 
4   #  #   # 
5   #  #   # 

에서이 테이블을 인쇄 출력뿐 아니라 입력합니다. 나는 테이블의 수, 사각형 및 큐브 부분에 대해 완벽하게 작동하는 다음 프로그램을 생각해 냈지만 주어진 수식을 사용하여 숫자를 생성하는 방법을 이해하지 못했습니다. 변수로 초기화 된 수식 (두 개)은 실제 결과를 인쇄하지 않으며 솔직히 뭘해야하는지에 대한 단서가 없습니다. 나는 복잡한 것보다는 간단한 설명을하고 복잡한 것보다는 코드의 간단한 변경을 원할 것입니다. 내가 말했듯이 나는 초보자이며 여러 가지 방법이 내 머리 위로 올 수있다. 미리 감사드립니다. (또한 추가 작업을 통해 각 열의 합계를 인쇄 해달라고 요청합니다. 어떻게해야할지 모르고 가능한 한 설명을 원하지만 마음에 들지는 않습니다. '이 t)는 하나가 나타날

int number; 
int maxValue; 

Scanner keyboard = new Scanner(System.in); 
System.out.println("how many numbers do you want the max value to be"); 
maxValue = keyboard.nextInt(); 

System.out.println("Number\tSquare\tCube (n+1)/(2n-18)"); 
System.out.println("--------------------------------"); 
for (number = 1; number <= maxValue; number++) { 
    double formula = (number + 1)/(number * 2); 
    System.out.println(
     number + "\t\t\t" + number * number + "\t\t\t" + 
     number * number * number + "\t\t\t" + formula); 
} 
+0

는 "공식 (...)가 실제 결과를 인쇄하지 않습니다"무엇을 의미합니까? 실제 결과물은 무엇이며 예상 한 내용은 무엇입니까? 우선,'numbers'를 인자로 받아서 기대하고있는'double'을 반환하는'private' 메소드 (예를 들어'calculateFormula')를 만들 수 있습니다. – aribeiro

답변

2

수식이 교과서와 일치하지 않습니다. 이것을 시도하십시오 :

System.out.println("Number\tSquare\tCube (n+1)/(2n-18)"); 
System.out.println("--------------------------------"); 

for (int number=1; number <= maxValue; number++) { 
    double square = Math.pow(number, 2); 
    double cube = Math.pow(number, 3); 
    double formula = (number + 1)/(number * 2 - 18); 
    System.out.println(number + "\t\t\t" + square + "\t\t\t" + cube + "\t\t\t" + formula); 
} 

참고 : @ 999 입력으로 지적한 것처럼 0으로 나눕니다. 이 검사되지 않은 예외를 잡으려고 시도하는 대신, 입력 값을 제어하여 이것이 발생하지 않도록해야한다고 생각합니다.

+0

예외 번호 == 9 –

3

귀하의 수식을해야한다 : -18

  • 누락

    • 은 /는 정수 나누기를하고있다 :

      double formula = (double)(number + 1)/(number * 2 - 18); 
      

      두 가지 문제 하나 이상의 피연산자를 이중으로 캐스팅하지 않는 한

    오! 한 가지 더 : 숫자 == 9 일 때, 0으로 나눈 값이 있습니다. 이중 나눗셈은 "무한대"를 제공하지만 정수 나누기는 예외를 throw합니다.

  • 1

    수식이 올바르지 않고 누락 된 수가 적습니다. \ t.

    int number; 
        int maxValue; 
    
        Scanner keyboard = new Scanner(System.in); 
        System.out.println("how many numbers do you want the max value to be"); 
        maxValue = keyboard.nextInt(); 
    
        System.out.println("Number\t\tSquare\t\tCube \t\t(n+1)/(2n-18)"); 
        System.out.println("-------------------------------------------------------"); 
        for (number = 1; number <= maxValue; number++) { 
         double formula = (number + 1)/(number * 2 - 18); 
         System.out 
           .println(number + "\t\t" + number * number + "\t\t" + number * number * number + "\t\t" + formula); 
    
        } 
    
    +2

    예외 번호 == 9 –

    +1

    예, 처리해야합니다. 거기에 무엇을 인쇄해야하는지 명확하지 않습니다. – vinS

    1

    내가 출력은 당신이 받고있는 모르겠지만, (N + 1)의 결과를 얻을 수하려고 할 때 integer division을 사용하고 날 것으로 보인다/(2N-18). 사용

    시도 :

    double decimalNumber = (double) number; 
    double formula = (decimalNumber + 1)/(decimalNumber * 2 - 18); 
    
    관련 문제