小达人Fighting 2017-04-17 11:02 采纳率: 0%
浏览 735

java 知识相关的问题,,,,,,,,,

package caishuzi;

import java.util.Random;
import java.util.Scanner;

public class User3 {
public static void main(String[] args){
int a = new Random().nextInt(101);
while(a == 0){
a = new Random().nextInt(101);
}
//System.in 代表标准键入,就是键盘输入
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()){

        try{
            int guess = Integer.valueOf(sc.next());
            System.out.println("您好,您输入的数字是:" + guess);
            if(guess > a){
                System.out.println("您好,您猜大了。");
            }
            else if(guess < a){
                System.out.println("您好,您猜小了。");
            }
            else{
                System.out.println("您好,您猜对了。");
                break;
            }
        }catch(NumberFormatException n){
            System.out.println("您好,您的输入有误!");
        }

   }
}

}
出现的问题是:在我自己的电脑上,上面的代码运行正常,。但是换了台电脑,重新运行时,int guess = Integer.valueOf(sc.next());程序在这行出错,提示是:不能将Integer包装类直接赋给 int 类型的 变量 guess,,这是什么原因导致的呢?

将这行代码换为:int guess = Integer.parseInt(sc.next());

int guess = sc.nextInt();
(则可能运行正常)
出现上面的情况是什么原因导致的呢?求大神们帮忙解解疑惑,先谢谢各位了

  • 写回答

2条回答 默认 最新

  • yizishou 2017-04-17 11:26
    关注

    java在1.5版本加入的语法糖,就是可以自动完成基本类型的装箱拆箱。
    所谓自动装箱,就是可以自动调用Integer.vauleOf(int)将int包装为Integer;
    自动拆箱,就是可以自动调用Integer.intValue()将Integer拆为int。

    出现你描述的问题,应该是因为你能正常运行的Java环境版本不低于1.5,而报错的环境Java版本低于1.5。

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮