2014-10-30 6 views
-1

나는 계산기를 만들지 만, "sin"의 왼쪽에 아무것도 없다면 나는 결과를 얻지 못한다. 그러나 만일 내가 "죄"앞에 숫자를 써 넣으면 그것은 조작을 수행하고 오른쪽에있는 숫자의 죄를 내게 줄 것입니다.IndexOf and SIN

case 6: { 
    int pos = str.indexOf("s"); 
    for (int i = 1; i <= pos; i++) { 

당신의 인덱스를 찾을 수 있습니다 : 나는 코드의이 비트에서 "sin43"

import java.util.Scanner; 

    public class InputScanner_operations { 
    public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    String str; 

    System.out.println("Input your equation"); 

    str = input.nextLine(); 

    int X = str.indexOf("X"); 
    int x = str.indexOf("x"); 
    int div = str.indexOf("/"); 
    int plu = str.indexOf("+"); 
    int sub = str.indexOf("-"); 
    int sin = str.indexOf("s"); 

    int type = 0; 

    if (X != -1) 
     type = 1; 
    else if (x != -1) 
     type = 2; 
    else if (div != -1) 
     type = 3; 
    else if (plu != -1) 
     type = 4; 
    else if (sub != -1) 
     type = 5; 
    else if (sin != -1) 
     type = 6; 
    else 
     type = 0; 

    switch (type) { 

    case 1: { 
     int pos = str.indexOf("X"); 
     for (int i = 1; i <= pos; i++) { 

      String upToNCharacters = str.substring(0, 
        Math.min(str.length(), i)); 
      String downToNCharacters = str.substring(pos + 1, 
        Math.max(str.length(), i)); 

      if (i == pos) { 

       Double left = Double.parseDouble(upToNCharacters); 
       Double right = Double.parseDouble(downToNCharacters); 
       System.out.println(left * right); 
      } 
     } 
    } 
     break; 
    case 2: { 
     int pos = str.indexOf("x"); 
     for (int i = 1; i <= pos; i++) { 

      String upToNCharacters = str.substring(0, 
        Math.min(str.length(), i)); 
      String downToNCharacters = str.substring(pos + 1, 
        Math.max(str.length(), i)); 

      if (i == pos) { 

       Double left = Double.parseDouble(upToNCharacters); 
       Double right = Double.parseDouble(downToNCharacters); 
       System.out.println(left * right); 
      } 
     } 
    } 
     break; 
    case 3: { 
     int pos = str.indexOf("/"); 
     for (int i = 1; i <= pos; i++) { 

      String upToNCharacters = str.substring(0, 
        Math.min(str.length(), i)); 
      String downToNCharacters = str.substring(pos + 1, 
        Math.max(str.length(), i)); 

      if (i == pos) { 

       Double left = Double.parseDouble(upToNCharacters); 
       Double right = Double.parseDouble(downToNCharacters); 
       System.out.println(left/right); 
      } 
     } 
    } 

     break; 
    case 4: { 
     int pos = str.indexOf("+"); 
     for (int i = 1; i <= pos; i++) { 

      String upToNCharacters = str.substring(0, 
        Math.min(str.length(), i)); 
      String downToNCharacters = str.substring(pos + 1, 
        Math.max(str.length(), i)); 

      if (i == pos) { 

       Double left = Double.parseDouble(upToNCharacters); 
       Double right = Double.parseDouble(downToNCharacters); 
       System.out.println(left + right); 
      } 
     } 
    } 
     break; 
    case 5: { 
     int pos = str.indexOf("-"); 
     for (int i = 1; i <= pos; i++) { 

      String upToNCharacters = str.substring(0, 
        Math.min(str.length(), i)); 
      String downToNCharacters = str.substring(pos + 1, 
        Math.max(str.length(), i)); 

      if (i == pos) { 

       Double left = Double.parseDouble(upToNCharacters); 
       Double right = Double.parseDouble(downToNCharacters); 
       System.out.println(left - right); 
      } 
     } 
    } 
    case 6: { 
     int pos = str.indexOf("s"); 
     for (int i = 1; i <= pos; i++) { 
      String upToNCharacters = str.substring(0, 
        Math.min(str.length(), i)); 
      String downToNCharacters = str.substring(pos + 3, 
        Math.max(str.length(), i)); 

      if (i == pos) { 

      @SuppressWarnings("unused") 
      Double left = Double.parseDouble(upToNCharacters); 
      Double right = Double.parseDouble(downToNCharacters); 
      System.out.println(Math.sin(right)); 
      } 
     } 
    } 
     break; 
    default: 
     System.out.println("Please check your formatting"); 

     } 
    } 
} 
+0

음식에 대한 생각 : '죄 45 + 죄 120'을 입력하면 어떻게 될까요? – JonK

+1

그것은 우리가 살펴볼 수있는 많은 코드입니다. 문제가 어디 있다고 생각하니? 우리는 문제와 무관 한 코드를 이해하려고 노력하는 데 시간을 낭비하고 싶지 않습니다. –

+0

가끔 'indexOf'의 윤리에 의문을 제기하는 동안 나는 "SIN"이라고 부르기에 짧게 그만 둡니다. –

답변

0

.... 당신이 경우에도로 넣어 숫자의 죄를 줄이 수 있도록하려면 "s"을 입력 한 다음 for 루프를 시작하십시오. 그러나 sin이 처음에있는 경우 pos은 0이 아니며 1이 아니므로 for 루프는 전혀 실행되지 않습니다. String은 0에서 인덱싱됩니다.

for 루프에서 int i = 1이 아닌 int i = 0으로 변경해보십시오.