Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java setType只存储大写字母_Java - Fatal编程技术网

Java setType只存储大写字母

Java setType只存储大写字母,java,Java,我正在为Java简介类做一个项目,PublicBookOrder类中的一个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 由此,我有两个问题: 下面的代码可以工作吗 public class BookOrder { private Stri

我正在为Java简介类做一个项目,PublicBookOrder类中的一个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
由此,我有两个问题:

  • 下面的代码可以工作吗

    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;
    }
    
  • 如何让它只存储大写字母?我读过这个字符。isUpperCase可以,但我在课堂上被告知你只能做String.toUpperCase,不能做char


  • 像这样替换每个条件

    type=='r'
    
    因为java使用==来检查相等性,并且需要“”来表示字符

    if (type=='r' || type=='R' /*etc etc*/)
    {
        if(type < 97) //Upper case
            this.type = type;
        else //Lower case
            this.type = (type - 32);
    }
    

    这将
    类型
    转换为
    字符串
    ,将其大写,然后将其转换回
    字符
    ,以分配给
    此类型。类型

    在比较时必须小心。比较字符串时,==运算符检查引用值。使用Strings.equals函数更安全(如果允许的话,或者自己做)


    在本例中,我从命令行获取参数,然后将它们与指定的值进行比较。阅读java函数文档可能会有所帮助:

    “下面的代码行得通吗?”您可以尝试使用seedfine
    work
    。我们看不到这个类型是在哪里定义的。实际上,atm我看不到。我有很多没有返回的方法要写,所以如果我尝试编译,它只会将它们作为错误抛出,其他什么都没有。实际上,你可以试试看:你的代码应该是正交的。如果您在一个新的空项目中编写了一个类似于上面所述的函数,那么您应该能够针对它运行代码,以查看它是否如您所期望的那样工作。查看
    JUnit
    。这非常有意义,应该可以很好地工作,唯一的问题是它抛出一个错误,说“精度损失”required:char;发现:int。这是一个错误。是的,我把它放在else部分,就像上面一样。你可以尝试用
    '
    (空格字符,ASCII值为32)替换
    32
    。否则,我将在一个讨厌的超级嵌套方法中进行编辑以大写…我尝试插入“”,但它仍然给了我一个负号错误。编辑成功了,虽然这是我在课堂上不应该知道的事情,但我会评论它,并告诉他我必须做一些研究才能得到它。哈哈,谢谢。
    else
        this.type = ((String.valueOf(type)).toUpperCase()).charAt(0);
    
    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]));
       } 
    }