黑马程序员技术交流社区

标题: 为什么结果是1 [打印本页]

作者: 杨奉泊    时间: 2015-5-28 15:48
标题: 为什么结果是1
public static void main(String[] arges)
        {
                int n = 10;
                int zhonghe = 0;
                int a = n-1;
                for(int i=0; i<a; i++)
                {
                        zhonghe = (n-1)+(n-2);
                        n= n-1;
                }
                System.out.println(zhonghe);
        }
作者: ETOLIA    时间: 2015-5-28 16:09
你想让它是多少?
作者: ETOLIA    时间: 2015-5-28 16:14
本帖最后由 ETOLIA 于 2015-5-28 16:15 编辑
  1. </blockquote><div class="blockcode"><blockquote><blockquote>public class Test3 {
  2.         public static void main(String Args[]){
  3.                  int n = 10;
  4.          int zhonghe = 0;
  5.          int a = 9;
  6.          for(int i=0; i<a; i++)
  7.          {
  8.                  zhonghe = 2*n-3;
  9.                  n--;
  10.                  System.out.println(zhonghe);
  11.          }
  12.          System.out.println(zhonghe);
  13.         }
  14. }
复制代码

你每for一下就给zhonghe重新赋了一次值。所以每次得到的就是一个新的,最后就是1。要是想得到一个加和的,你应该改成zhonghe += 2*n-3;这样。

作者: 星辉祝愿    时间: 2015-5-28 16:21
zhonghe = (n-1)+(n-2);你这样写zhonghe的值只会是for循环里(n-1)+(n-2)最后一次的和,而最后就是n=2,zhonghe=(2-1)+(2-2);n=2-1;
作者: qian0217wei    时间: 2015-5-28 16:54
你的zhonghe没有记录,每次遍历就重新赋值一次,所以,你的结果就是1
作者: 杨奉泊    时间: 2015-5-28 18:08
ETOLIA 发表于 2015-5-28 16:14
你每for一下就给zhonghe重新赋了一次值。所以每次得到的就是一个新的,最后就是1。要是想得到一个加和的, ...

知道了  谢谢
作者: 杨奉泊    时间: 2015-5-28 18:10
星辉祝愿 发表于 2015-5-28 16:21
zhonghe = (n-1)+(n-2);你这样写zhonghe的值只会是for循环里(n-1)+(n-2)最后一次的和,而最后就是n=2,zhon ...

恩 我应该写 zhonghe = zhonghe +(n-1)+(n-2);
作者: 小水    时间: 2015-5-28 18:23
只能是1啊
作者: 黯然残影    时间: 2015-5-28 18:26
到最后一次循环,n的值为2当然结果为1




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2