得到一下代码的值并说明原因:Integer i8=Integer.valueOf("11",16); System.out.println("i8="+i8); int i9= Integer.valueOf("15"); System.out.println("i9="+i9); int i10=Integer.parseInt("15",16); System.out.println("i10="+i10);
时间: 2023-07-14 19:12:56 浏览: 68
输出结果为:
```
i8=17
i9=15
i10=21
```
原因如下:
- `Integer.valueOf("11",16)`:将字符串"11"解释为十六进制数,转换为对应的整数值并赋给变量i8,因为十六进制的"11"在十进制中表示的是17。
- `Integer.valueOf("15")`:将字符串"15"解释为十进制数,转换为对应的整数值并赋给变量i9。
- `Integer.parseInt("15",16)`:将字符串"15"解释为十六进制数,转换为对应的整数值并赋给变量i10,因为十六进制的"15"在十进制中表示的是21。注意,此处使用的是parseInt方法而非valueOf方法。parseInt方法直接将字符串解析为整数,而valueOf方法可以解析不同进制的字符串。
相关问题
得到一下代码的值并说明x、y可以等于多少:Integer i8=Integer.valueOf("11",x); System.out.println("i8="+i8); int i9= Integer.valueOf("15"); System.out.println("i9="+i9); int i10=Integer.parseInt("15",y); System.out.println("i10="+i10);
在代码中,第一行使用了valueOf方法将字符串"11"转换为整数类型,x是进制数,但没有指定,默认为10进制。第二行使用valueOf方法将字符串"15"转换为整数类型,同样没有指定进制,默认为10进制。第三行使用parseInt方法将字符串"15"转换为整数类型,y是进制数,但没有指定,默认为10进制。
因此,输出结果为:
i8=11 (x可以等于2-36之间的任何一个数字,表示11的进制数)
i9=15 (默认为10进制)
i10=15 (y可以等于2-36之间的任何一个数字,表示15的进制数)
// place your YACC rules here (there must be at least one) express :dexpress NEWLINE { System.out.println("Answer:"+$1.value); }; dexpress :dexpress RBRAKET {System.out.print("RBRAKET express"); $$.strValue="("+$2.strValue; $$.value=$2.value; System.out.println($$.value); }; dexpress :dexpress LBRAKET { System.out.print("LBRAKET express"); $$.strValue=$2.strValue+")"; $$.value=$2.value; System.out.println($$.value); }; dexpress :dexpress PLUS dexpress { System.out.print("Plus express"); $$.value = $1.value +$3.value; System.out.println($$.value); }; dexpress: dexpress SUB dexpress {System.out.print("Sub express"); $$.value = $1.value -$3.value; System.out.println($$.value);}; dexpress: dexpress DIV dexpress {System.out.print("Div express"); $$.value = $1.value /$3.value; System.out.println($$.value);}; dexpress: dexpress MULTI dexpress {System.out.print("Multi express"); $$.value = $1.value *$3.value; System.out.println($$.value);}; dexpress :NUMBER { $$.value=$1.value; System.out.println("Number to dexpress "+$1.value); }; dexpress :EQUAL { System.out.print("Equal express"); $1.value = $3.value; $$.value = $1.value; System.out.println($$.value); };帮我修改错误
在你的 YACC 规则中,有一个错误:在 `dexpress` 规则的最后一行,你使用了 `$1` 和 `$3`,但是在此之前没有定义 `$1` 和 `$3`,因此会导致语法分析错误。
你需要将该规则修改为以下内容:
```
dexpress : dexpress EQUAL dexpress {
System.out.print("Equal express");
$1.value = $3.value;
$$.value = $1.value;
System.out.println($$.value);
}
```
这里使用了 `$1` 和 `$3` 来引用等号两侧的表达式的值,因此你需要确保你之前定义了这两个规则。