2013-06-01 29 views
8

Đây là lớp lập trình thứ hai của tôi và tôi mới sử dụng Java. Tôi đã làm bài tập đầu tiên và nó liên quan đến các lớp học và phương pháp. Tôi biết rất ít về những chủ đề này và thấy mình bị mất. Nhiệm vụ của tôi yêu cầu tôi tạo một máy tính RPN yêu cầu người dùng cho hai số và một toán tử. Máy tính thực hiện thao tác trên hai số đó và yêu cầu thêm một số và một toán tử nữa. Máy tính sau đó sử dụng kết quả từ tập đầu tiên và thực hiện một thao tác khác với số mới vừa nhập. Chương trình sẽ kết thúc khi người dùng nhập một chữ cái. Tôi gắn mã của tôi (thô). Tôi cần nhiều trợ giúp về phương pháp như tôi làm với mã hóa. Xin hãy giúp càng sớm càng tốt, tôi muốn học điều này. Bất kỳ trợ giúp được đánh giá cao.RPNCalculator Code Confusion

import java.util.Scanner; 

public class RPNCalc 
{ 
    public static void main(String[]args) 
    { 
     Scanner keyboard = new Scanner(System.in); 

     double v1, v2; 
     String operator = keyboard.nextLine(); 
     char symbol = operator.charAt(0); 

     System.out.print("Enter a value v1: "); 
     v1 = keyboard.nextDouble(); 
     System.out.println(); 
     System.out.print("Enter a value v2: "); 
     v2 = keyboard.nextDouble(); 
     System.out.println(); 
     System.out.print("Enter one of the valid operators +, -, *, /, nCr,: "); 
     operator = keyboard.nextLine(); 
     switch (symbol) 
      { 
      case'+': 
       sum.writeOutput(); 
       break; 
      case'-': 
       minus.writeOutput(); 
       break; 
      case'*': 
       times.writeOutput(); 
       break; 
      case'/': 
       divide.writeOutput(); 
       break; 
      case'q': 
       System.out.println("Your last result was " ); 
      default: 
       System.out.println("You must choose an appropriate operator ."); 
      } 
    } 

    double value1, value2; 
    int n; 

    public static double sum(double value1,double value2) 
    { 
     double newSum = value1 + value2; 
     return newSum; 
    } 
    public static double minus(double value1, double value2) 
    { 
     double newMinus = value1 - value2; 
     return newMinus; 
    } 
    public static double times(double value1, double value2) 
    { 
     double newTimes = value1 * value2; 
     return newTimes; 
    } 
    public static double divide(double value1, double value2) 
    { 
     double newDivide = value1/value2; 
     return newDivide; 
    } 
} 
+0

Sự cố là gì? – arynaq

+0

Tôi nhận được 4 lỗi cho biết trình biên dịch không thể tìm thấy biểu tượng. Nó được gắn. Tôi không có ý tưởng nếu tôi làm điều này một cách chính xác và nếu nó sẽ cho tôi kết quả tôi tìm kiếm. Tôi có nên tạo một tệp java riêng với mô tả lớp không? Một lần nữa, tôi mới lập trình. RPNCalc.java:25: lỗi: không thể tìm thấy biểu tượng \t \t \t \t sum.writeOutput(); \t \t \t \t^ – Charla

+1

'sum.writeOutput();' là gì? Chỉ 'tổng hợp' mà tôi thấy được định nghĩa là một hàm và các hàm không thể có các thành viên và tôi không thấy hàm' writeOutput() 'được định nghĩa ở bất kỳ đâu, do đó, đó là hai lỗi. – Patashu

Trả lời

1

OK. Đây rồi. Tôi đã sửa đổi chương trình của bạn một chút. Dưới đây là các vấn đề xảy ra khi sửa đổi chương trình của bạn. 1. Không có phương thức writeOutput() trong bất kỳ lớp nào, do đó tôi phải loại bỏ đoạn mã đó 2. Phải giới thiệu một vòng lặp while để làm cho quá trình lặp lại này là 3. di chuyển xuống toán tử .charAt (0) phương pháp sau khi chúng ta đọc chuỗi nhà điều hành

Vì bạn đang sử dụng lệnh chuyển đổi, bạn không thể so sánh giá trị toán tử với giá trị chuỗi "nCr" .Để sử dụng giá trị chuỗi này, bạn sẽ phải sử dụng So sánh chuỗi bằng cách sử dụng Phương thức equals()

Cuối cùng nhưng không kém phần quan trọng, kết quả của phép toán phải là một trong các đầu vào cho vòng tính toán tiếp theo.

import java.util.Scanner; 

public class RPNCalc 
{ 
    public static void main(String[]args) 
    { 
     Scanner keyboard = new Scanner(System.in); 

     double v1, v2; 
//  String operator = keyboard.nextLine(); 
//  char symbol = operator.charAt(0); 
     char operator = ' ';//First time around, set this to an something other than 'q' 
     String operatorString = " "; 
     System.out.print("Enter a value v1: "); 
     v1 = keyboard.nextDouble(); 
     System.out.println(); 
     while(operator != 'q') 
     { 
      System.out.print("Enter a value v2: "); 
      v2 = keyboard.nextDouble(); 
      System.out.println(); 
      System.out.print("Enter one of the valid operators +, -, *, /, nCr,: "); 
      operatorString = keyboard.next();//nextLine() doesn't wait until the user hit enter 
      operator = operatorString.charAt(0); 
      switch (operator) 
      { 
      case'+': 
       v1 = sum(v1, v2); 
       System.out.println(v1); 
       break; 
      case'-': 
       v1 = minus(v1, v2); 
       System.out.println(v1); 
       break; 
      case'*': 
       v1 = times(v1, v2); 
       System.out.println(v1); 
       break; 
      case'/': 
       v1 = divide(v1, v2); 
       System.out.println(v1); 
       break; 
      case'q': 
       System.out.println("Your last result was " );     
      default: 
       System.out.println("You must choose an appropriate operator ."); 
      } 
     } 
    } 

    double value1, value2; 
    int n; 

    public static double sum(double value1,double value2) 
    { 
     double newSum = value1 + value2; 
     return newSum; 
    } 
    public static double minus(double value1, double value2) 
    { 
     double newMinus = value1 - value2; 
     return newMinus; 
    } 
    public static double times(double value1, double value2) 
    { 
     double newTimes = value1 * value2; 
     return newTimes; 
    } 

    public static double divide(double value1, double value2) 
    { 
     if (value2 == 0) 
     { 
      System.out.println("Division by Zero. Try again"); 
      return value1; 
     } 
     double newDivide = value1/value2; 
     return newDivide; 
    } 
} 
+0

Mặc dù tôi đã tìm ra điều này với gia sư, tôi đánh giá cao sự giúp đỡ của bạn. Điều này rất dễ hiểu. Cảm ơn một lần nữa. – Charla

0

Bạn đang xử lý tên hàm của mình như thể chúng là đối tượng của một số lớp học. Điều này thậm chí biên dịch?

Bạn muốn thoát khỏi chương trình của mình khi người dùng nhập 'q'.

Bạn bắt đầu bằng cách đọc toán tử ngay từ đầu. Tại sao?

Bạn cần phải bao gồm phần chính của chương trình trong vòng lặp.

tôi sẽ viết ra một vài dòng cho bạn, nhưng phần lớn các thay đổi được trái như một bài tập cho bạn

double result; 
System.out.print("Enter the first value"); 
result = keyboard.nextDouble(); 
boolean done = false; 

while (!done) { 
    System.out.println("Enter a value"); 
    v1 = keyboard.nextDouble(); 
    System.out.print("Enter one of the valid operators +, -, *, /, nCr,: "); 
    operator = keyboard.nextLine(); 
    symbol = operator.charAt(0); 
    switch (symbol) { 
     case '+': 
     result = sum(result, v1); 
     break; 
     ... 
     case 'q': 
     System.out.println("Your last result was " + result); 
     done = true; 
     break; 
    } 
} 
+0

Không có tệp nào không biên dịch, tôi nhận được 4 lỗi tất cả đều nêu RPNCalc.java:25: lỗi: không thể tìm thấy biểu tượng \t \t \t \t sum.writeOutput(); \t \t \t \t^ biểu tượng: biến tổng vị trí: lớp RPNCalc \t \t \t \t^ – Charla

+0

Xin lỗi tôi đã không hoàn thành tuyên bố của tôi. Ban đầu tôi đã có một chương trình hoàn toàn khác được bọc trong một bản tuyên bố trong khi thực hiện nhưng được hướng dẫn thay đổi nó. – Charla