-1

我正在为我的 Java 类介绍工作一个项目,Public BookOrder 类中的 UML 方法之一如下:

+setType(type:char):void
// accepts (R,r,O,o,P,p,F,f,U,u,N), but stores
// UPPERcase letters. For any other type entered, the value N is stored

由此,我有两个问题:

  1. 下面的代码会起作用吗?

    public class BookOrder
    {
    private String author;      
    private String title;
    private int quantity;
    private double costPerBook;
    private String orderDate;
    private double weight;
    private char type;      //R,O,F,U,N
    
    
    public void setType(char type)
    {
        if (type=r || type=R || type=o || type= O || type= f || type= F || type= u || type= U || type= n || type= N)
            this.type= type;
        else
            this.type= N;
    }
    
  2. 如何让它只存储大写字母?我读到 Character.isUpperCase 可以工作,但我在课堂上被告知你只能做 String.toUpperCase,不能做 char。

4

3 回答 3

0

比较事物时必须小心。比较字符串时,== 运算符会检查参考值。使用 Strings.equals 函数是一个更安全的选择(如果您被允许,或者自己制作)。

import java.util.*;

public class Main{

    public static String setType(String type)
    {
        if (type.equals("r") || type.equals("R") || type.equals("o") || type.equals("O") || type.equals("f") || type.equals("F") || type.equals("u") || type.equals("U") || type.equals("n") || type.equals("N"))
            type=type;
        else
            type="N";

        return type;
    }


   public static void main(String [] args){
    System.out.println("Try different stuff");
    System.out.printf("%s\n",setType(args[0]));
   } 
}

在此示例中,我从命令行获取参数,然后将它们与指定值进行比较。阅读 java 函数文档可能会有所帮助:http: //docs.oracle.com/javase/7/docs/api/java/lang/String.html

于 2013-11-04T19:46:15.547 回答
0

像这样替换您的每个条件

type=='r'

由于 java 使用 == 来检查相等性并且需要 ' ' 来表示字符

于 2013-11-04T19:16:30.303 回答
0
if (type=='r' || type=='R' /*etc etc*/)
{
    if(type < 97) //Upper case
        this.type = type;
    else //Lower case
        this.type = (type - 32);
}

或者...

else
    this.type = ((String.valueOf(type)).toUpperCase()).charAt(0);

这将转换type为 a String,将其大写,然后将其转换回 achar以分配给this.type

于 2013-11-04T19:17:45.967 回答