2013-03-18 79 views
1

因此,在我的第五行代码[if(length == 2 || 1)]中,我收到一条错误消息,未定义为参数类型boolean,int。关于我的语法有什么问题以及我如何解决它的任何想法?谢谢!在带有字符串长度方法的“if”语句中使用“或”语句

//Write a program that translates a letter grade into a number grade. Letter grades are 
//A B C D F, possibly followed by + or -. Their numeric values are 4, 3, 2, 1, and 0. 
//There is no F+ or F-. A + increases the numeric value by 0.3, a - decreases it by  0.3. 
//However, an A+ has the value 4.0. All other inputs have value –1. 
//Enter a letter grade: 

//使用类使用方法getNumericGrade评分。

public class Grade { 
private double grade = 0.0; 
public double getNumericGrade(String letterGrade){ 
    int length = letterGrade.length(); 
    if(length == 2 || 1){ 
     char startChar = letterGrade.charAt(0); 
     char endChar = letterGrade.charAt(1); 
     switch(startChar){ 
     case 'A': 
      this.grade = 4.0; 
      break; 
     case 'B': 
      this.grade = 3.0; 
      break; 
     case 'C': 
      this.grade = 2.0; 
      break; 
     case 'D': 
      this.grade = 1.0; 
      break; 
     case 'F': 
      this.grade = 0.0; 
      break; 
     default: 
      this.grade = -1; 
     } 
    if(length == 2){ 
     switch(endChar){ 
     case '-': 
      this.grade = this.grade - .3; 
      break; 
     case '+': 
      if(startChar != 'A'){ 
      this.grade = this.grade + .3; 
      } 
      break; 
     default: 
      this.grade = -1; 
     } 
    } 
    if(startChar == 'F' && length != 1){ 
     this.grade = -1; 
    } 
    }else{ 
     this.grade = -1; 
    } 
    return this.grade; 
} 

}

+1

应该是'长度== 2 ||长度== 1'。无法在条件中为1进行2。 – squiguy 2013-03-18 00:55:57

回答

3

这意味着||运营商并不需要一个布尔值和一个int,你必须给它两个布尔表达式。

if(length == 2 || length == 1) 
+0

非常感谢,工作! – 2013-03-18 00:57:05

+1

+1速度(有两种类型的人:快速和没有) – Bohemian 2013-03-18 00:57:15

1

你想说的是if(length == 1 || length == 2)。你现在正在做的是说如果(长度= 2或1)。前者涉及两个可以评估真假的逻辑陈述,后者一方面包含逻辑陈述,另一方面包含整数。

计算机不会将长度== 2或1解释为“如果长度是一个或两个,则返回true”,而是解释为“(如果长度等于二则返回true”)或(整数1)“。

0

你可以这样做:

if (Arrays.asList(1,2,3).contains(l.lenghth)) 
    // code 
+0

你好。我注意到你是一个新用户。请阅读[回答]。 – 2013-03-18 05:49:39

+0

我的回答有什么问题? – Sascha 2013-03-18 07:13:29

+0

这没有错,它不是*** ***。一般来说,你付出的努力越多,奖励就越多。我看到你是新的,因此我将你重定向到一个页面,专门告诉你这个网站的注意事项。 – 2013-03-18 07:42:20