插入变量以最小化代码

发布于 2024-09-29 14:02:08 字数 1087 浏览 5 评论 0原文

我面临一个奇怪的问题。

if ( c2==c1){
    c3 *= 2 ; 
    System.out.println( c3 ) ; 
    .....
}

我想在 println 语句中插入 c3*2 。但

if ( c2==c1){
    System.out.println( c3*2 ) ; 

给了我不同的结果。

这是完整的代码:

        public static void main(String [] args) {

           int c1 = Integer.parseInt(args[0]) ;
           int c2 = Integer.parseInt(args[1]) ;
           int c3 = Integer.parseInt(args[2]) ;

/*  1 */       if ( c1 != c3 ){
/*  2 */        if (c2==c1){
/*  3 */              
/*  4 */              System.out.println(c3 + c2 ) ; 
/*  5 */              c3 *= c2 ; 
/*  6 */        }

/*  7 */       }else{ 
/*  8 */        if ( c2==c1){
/*  9 */                    c3 *= 2 ; 
/* 10 */                    System.out.println( c3 ) ; 
/* 11 */                    c3 *= c2 ; 
/* 12 */            if ( c1 < c2 ) c2 += 7 ;
/* 13 */                   else c2 += 5 ; 
/* 14 */               }}

/* 15 */       System.out.println( c1+c2+c3) ;     
        }          
        .....
    }

有什么想法吗?

I am facing a strange problem.

if ( c2==c1){
    c3 *= 2 ; 
    System.out.println( c3 ) ; 
    .....
}

I want to insert c3*2 in the println statment. But

if ( c2==c1){
    System.out.println( c3*2 ) ; 

gives me a different result.

Here is the whole code:

        public static void main(String [] args) {

           int c1 = Integer.parseInt(args[0]) ;
           int c2 = Integer.parseInt(args[1]) ;
           int c3 = Integer.parseInt(args[2]) ;

/*  1 */       if ( c1 != c3 ){
/*  2 */        if (c2==c1){
/*  3 */              
/*  4 */              System.out.println(c3 + c2 ) ; 
/*  5 */              c3 *= c2 ; 
/*  6 */        }

/*  7 */       }else{ 
/*  8 */        if ( c2==c1){
/*  9 */                    c3 *= 2 ; 
/* 10 */                    System.out.println( c3 ) ; 
/* 11 */                    c3 *= c2 ; 
/* 12 */            if ( c1 < c2 ) c2 += 7 ;
/* 13 */                   else c2 += 5 ; 
/* 14 */               }}

/* 15 */       System.out.println( c1+c2+c3) ;     
        }          
        .....
    }

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

东走西顾 2024-10-06 14:02:08
c3 *= 2; 
System.out.println( c3 ) ; 

会打印出与:相同的内容,

System.out.println( c3 * 2 ) ; 

但关键的区别在于,在第一种情况下,c3 变量的值将被修改(乘以 2),而在第二种情况下,它将保持不变。

c3 *= 2; 
System.out.println( c3 ) ; 

would print the same thing as:

System.out.println( c3 * 2 ) ; 

but the crucial difference is that in the first case the value of the c3 variable will be modified (multiplied by 2) while in the second it will stay the same.

栩栩如生 2024-10-06 14:02:08

根据变量的类型,可能会得到不同的结果 - 请记住 *= (以及 ++-- 等)强制转换结果与c3类型相同。例如:

byte b = 100;
System.out.println(b*2); // 200
b*=2;
System.out.println(b); // -56

示例:http://ideone.com/ojKfA

It's possible to get different result depending on the type of your variable - remember *= (and also ++, --, etc) casts the result to the same type as c3. For example:

byte b = 100;
System.out.println(b*2); // 200
b*=2;
System.out.println(b); // -56

Example: http://ideone.com/ojKfA

空城旧梦 2024-10-06 14:02:08

如果您执行 c3 *= 2; ,它将更改 c3 的值,该值将打印与最后一行不同的值 System.out.println( c1+ c2+c3);。所以你需要遵循你的程序的逻辑。

If you do c3 *= 2; it will change the value of c3 which will print a different value from the last line System.out.println( c1+c2+c3);. So you need to follow the logic of your program.

岁吢 2024-10-06 14:02:08

如果你想修改变量并同时打印它,你可以这样做:

System.out.println(c3 *= 2);

If you want to modify variable and print it at the same time you can do it like this:

System.out.println(c3 *= 2);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文