Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.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 如何初始化字符串?_Java_String_Initialization - Fatal编程技术网

Java 如何初始化字符串?

Java 如何初始化字符串?,java,string,initialization,Java,String,Initialization,这是我程序中有问题的部分。我得到“局部变量car可能尚未初始化”。我应该如何使“car”初始化?Java不能保证car会被初始化。在分配汽车的if语句中,您没有保证案例(else) 将其初始化为某个值,例如空字符串 String car; if (type == 'E') {fee = rate*50; car = "Economy";} else if (type == 'M') {fee = rate*70;

这是我程序中有问题的部分。我得到“局部变量car可能尚未初始化”。我应该如何使“car”初始化?

Java不能保证
car
会被初始化。在分配
汽车的
if
语句中,您没有保证案例(
else

将其初始化为某个值,例如空字符串

String car; 

    if (type == 'E')
        {fee = rate*50;
         car = "Economy";}

    else if (type == 'M')
         {fee = rate*70;
         car = "Midsize";}


    else if (type == 'F')
        {fee = rate*100;
        car = "Fullsize";}

System.out.println("Car type is " + car);

通常,您可以将字符串设置为
null
,以解决编译错误

String car = "";

这是因为Java试图保护您不做您不期望的事情。如果未执行所有
If
语句,则不会分配变量。为了告诉Java,您知道可能会发生这种情况,只需显式地将其设置为
null

Java无法判断变量reach print将发生什么,因为它最初不指向任何地方,进一步的初始化包含在条件中
将你的汽车变量设置为默认值,这取决于逻辑:“”或者“NULL是不错的选择,但最终取决于你,

< P>我会考虑用另一种方式来做:

String car = null;

如何使用内部
Enum
类解决此问题

switch (type) {
 case 'E':
    fee =rate* 50;
    car = "Economy";
    break;
 case 'M':
    fee =rate* 70;
    car = "Economy";
    break;
 case 'F':
    fee =rate*100;
    car = "Economy";
    break;
 default:
    fee = 0;
    car = "";
}

如果type不等于
E
M
F
,该怎么办?只需使用
String car=“”)初始化它
在这种情况下,您应该为
E
M
F
值使用
enum
;您可以为枚举值分配名称、描述、速率等,这样可以使代码更干净、更安全、更易于维护。始终将字符串变量初始化为空而不是空是一种好做法吗?
public class EnumExample {
    public enum CarType {
        E( 50,"Economy" ),
        F( 70, "Midsize" ),
        M( 100, "Fullsize");
        // Add as many as you want

        private int cost;
        private String type;

        CarType(int theCost, String theType) {
            cost = theCost;
            type = theType;
        }

        public int getFee(int rate) {
            return rate*cost;
        }

        public String toString() {
            return type;
        }
    }
    public static void main( String[] args ) {
        String type = "E";
        int rate = 25;

        switch( CarType.valueOf( type ) ) {
            case E:
                System.out.println( "The Car Type is: " + CarType.E );
                System.out.println( "The fee is: " + CarType.E.getFee(rate) );
                break;
            case F:
                System.out.println( "The Car Type is: " + CarType.F );
                System.out.println( "The fee is: " + CarType.F.getFee(rate) );
                break;
            case M:
                // ETC
            default:
                // Use a switch/case so you can add 'no car type' e.g Fee = 0;
        }
    }
}