黑马程序员技术交流社区

标题: 已经public了为什么无法访问别的类中的变量 [打印本页]

作者: f78fk    时间: 2014-6-3 19:47
标题: 已经public了为什么无法访问别的类中的变量
本帖最后由 f78fk 于 2014-6-4 21:15 编辑

自己做了一个计算器,发现定义了一个函数out() ,  main函数和out()都已经public了,结果发现out()这个函数无法访问main函数中的变量jieguo
编译提示:
JiSuanQi.java:47: 错误: 找不到符号
                        System.out.println(jieguo);

  符号:   变量 jieguo
  位置: 类 JiSuanQi


  1. import java.util.*;
  2. class JiSuanQi
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 System.out.println("请输入您要参与运算的第1个数,回车键结束输入。");
  7.                 Scanner a = new Scanner(System.in);
  8.                 int a1 = a.nextInt();
  9.                
  10.                 System.out.println("请输入您要参与运算的第2个数,回车键结束输入。");
  11.                 Scanner b = new Scanner(System.in);
  12.                 int b1 = b.nextInt();
  13.                
  14.                 System.out.println("请输入您要运算的方式,填写相对应的数字:\n1:+\n2:-\n3:*\n4:/");
  15.                 Scanner c = new Scanner(System.in);
  16.                 int c1 = c.nextInt();
  17.                
  18.                 int jieguo;

  19.                 if (c1==1)
  20.                 {
  21.                         jieguo = a1+b1;
  22.                         out();
  23.                 }
  24.                 else if (c1==2)
  25.                 {
  26.                         jieguo = a1-b1;
  27.                         out();
  28.                 }
  29.                 else if (c1==3)
  30.                 {
  31.                         jieguo = a1*b1;
  32.                         out();
  33.                 }
  34.                 else if (c1==4)
  35.                 {
  36.                         jieguo = a1/b1;
  37.                         out();
  38.                 }
  39.                 else
  40.                         System.out.print("输入值错误");

  41.                 }

  42.         public static void out()
  43.                 {
  44.                         System.out.println(jieguo);
  45.                 }
  46. }
复制代码

第一个问题已经搞定了,感谢沙发lex和朋友们的指点现在又有一个问题,本来想让最后用户输入1就继续循环执行程序
否则退出程序,结果这个程序一直死循环下去了,这个又是为何?
最新源码:


  1. import java.util.*;
  2. class JiSuanQi
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 boolean bl = true;
  7.                 while (bl)
  8.                 {
  9.                
  10.                         System.out.println("请输入您要参与运算的第1个数,回车键结束输入。");
  11.                         Scanner a = new Scanner(System.in);
  12.                         int a1 = a.nextInt();
  13.                         
  14.                         System.out.println("请输入您要参与运算的第2个数,回车键结束输入。");
  15.                         Scanner b = new Scanner(System.in);
  16.                         int b1 = b.nextInt();
  17.                         
  18.                         System.out.println("请输入您要运算的方式,填写相对应的数字:\n1:+\n2:-\n3:*\n4:/");
  19.                         Scanner c = new Scanner(System.in);
  20.                         int c1 = c.nextInt();
  21.                         
  22.                         int jieguo;

  23.                         if (c1==1)
  24.                         {
  25.                                 jieguo = a1+b1;
  26.                                 out(jieguo);
  27.                         }
  28.                         else if (c1==2)
  29.                         {
  30.                                 jieguo = a1-b1;
  31.                                 out(jieguo);
  32.                         }
  33.                         else if (c1==3)
  34.                         {
  35.                                 jieguo = a1*b1;
  36.                                 out(jieguo);
  37.                         }
  38.                         else if (c1==4)
  39.                         {
  40.                                 jieguo = a1/b1;
  41.                                 out(jieguo);
  42.                         }
  43.                         else
  44.                                 System.out.print("输入值错误");

  45.                         }

  46.                         System.out.print("继续请输入1,结束程序请按输入任意键");

  47.                         Scanner d = new Scanner(System.in);
  48.                         int d1 = d.nextInt();

  49.                         if (d1!=1)
  50.                         {
  51.                                 bl=false;
  52.                         }
  53.                         

  54.                 }
  55.         public static void out(int jieguo)
  56.                 {
  57.                         System.out.println("结果为:"+jieguo);
  58.                 }
  59. }
复制代码







作者: Lex    时间: 2014-6-3 20:00
亲你木有在函数  public static void out()中传递参数啊,怎么会有值呢!
45行改成 public static void out(jieguo)     就行了
作者: f78fk    时间: 2014-6-3 20:02
Lex 发表于 2014-6-3 20:00
亲你木有在函数  public static void out()中传递参数啊,怎么会有值呢!
45行改成 public static void ou ...

原来是这样,我试试,谢谢!
作者: Lex    时间: 2014-6-3 20:05
f78fk 发表于 2014-6-3 20:02
原来是这样,我试试,谢谢!

忘了,我2了,应该改成public static void out(int jieguo)
作者: Horan    时间: 2014-6-3 20:06

在方法中添加上参数


import java.util.*;
class JiSuanQi
{
        public static void main(String[] args)
        {
                System.out.println("请输入您要参与运算的第1个数,回车键结束输入。");
                Scanner a = new Scanner(System.in);
                int a1 = a.nextInt();
               
                System.out.println("请输入您要参与运算的第2个数,回车键结束输入。");
                Scanner b = new Scanner(System.in);
                int b1 = b.nextInt();
               
                System.out.println("请输入您要运算的方式,填写相对应的数字:\n1:+\n2:-\n3:*\n4:/");
                Scanner c = new Scanner(System.in);
                int c1 = c.nextInt();
               
                int jieguo;
                if (c1==1)
                {
                        jieguo = a1+b1;
                        out(jieguo);
                }
                else if (c1==2)
                {
                        jieguo = a1-b1;
                        out(jieguo);
                }
                else if (c1==3)
                {
                        jieguo = a1*b1;
                        out(jieguo);
                }
                else if (c1==4)
                {
                        jieguo = a1/b1;
                        out(jieguo);
                }
                else
                        System.out.print("输入值错误");
                }
        public static void out(int jieguo)
                {
      System.out.println(jieguo);
                }
}

作者: Hi天天向上    时间: 2014-6-3 20:10
那个out函数里面至少要传一个参数啊  要不怎么打印输出呢
public void static out(jieguo){
}
就行了

作者: f78fk    时间: 2014-6-3 20:37
Lex 发表于 2014-6-3 20:05
忘了,我2了,应该改成public static void out(int jieguo)

那个已经搞定了,我现在想让这个程序最后输入1继续循环,否则退出,结果一直循环下去了。我明明标记了bl=false;
能再帮我看看吗?
最新源码:
  1. import java.util.*;
  2. class JiSuanQi
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 boolean bl = true;
  7.                 while (bl)
  8.                 {
  9.                
  10.                         System.out.println("请输入您要参与运算的第1个数,回车键结束输入。");
  11.                         Scanner a = new Scanner(System.in);
  12.                         int a1 = a.nextInt();
  13.                        
  14.                         System.out.println("请输入您要参与运算的第2个数,回车键结束输入。");
  15.                         Scanner b = new Scanner(System.in);
  16.                         int b1 = b.nextInt();
  17.                        
  18.                         System.out.println("请输入您要运算的方式,填写相对应的数字:\n1:+\n2:-\n3:*\n4:/");
  19.                         Scanner c = new Scanner(System.in);
  20.                         int c1 = c.nextInt();
  21.                        
  22.                         int jieguo;

  23.                         if (c1==1)
  24.                         {
  25.                                 jieguo = a1+b1;
  26.                                 out(jieguo);
  27.                         }
  28.                         else if (c1==2)
  29.                         {
  30.                                 jieguo = a1-b1;
  31.                                 out(jieguo);
  32.                         }
  33.                         else if (c1==3)
  34.                         {
  35.                                 jieguo = a1*b1;
  36.                                 out(jieguo);
  37.                         }
  38.                         else if (c1==4)
  39.                         {
  40.                                 jieguo = a1/b1;
  41.                                 out(jieguo);
  42.                         }
  43.                         else
  44.                                 System.out.print("输入值错误");

  45.                         }

  46.                         System.out.print("继续请输入1,结束程序请按输入任意键");

  47.                         Scanner d = new Scanner(System.in);
  48.                         int d1 = d.nextInt();

  49.                         if (d1!=1)
  50.                         {
  51.                                 bl=false;
  52.                         }
  53.                        

  54.                 }
  55.         public static void out(int jieguo)
  56.                 {
  57.                         System.out.println("结果为:"+jieguo);
  58.                 }
  59. }
复制代码




作者: Lex    时间: 2014-6-3 20:59
f78fk 发表于 2014-6-3 20:37
那个已经搞定了,我现在想让这个程序最后输入1继续循环,否则退出,结果一直循环下去了。我明明标记了bl= ...
  1. <p>import java.util.*;
  2. class JiSuanQi
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 boolean bl = true;
  7.                 while (bl)
  8.                 {
  9.                
  10.                         System.out.println("请输入您要参与运算的第1个数,回车键结束输入。");
  11.                         Scanner a = new Scanner(System.in);
  12.                         int a1 = a.nextInt();
  13.                         
  14.                         System.out.println("请输入您要参与运算的第2个数,回车键结束输入。");
  15.                         Scanner b = new Scanner(System.in);
  16.                         int b1 = b.nextInt();
  17.                         
  18.                         System.out.println("请输入您要运算的方式,填写相对应的数字:\n1:+\n2:-\n3:*\n4:/");
  19.                         Scanner c = new Scanner(System.in);
  20.                         int c1 = c.nextInt();
  21.                         
  22.                         int jieguo;

  23.                         if (c1==1)
  24.                         {
  25.                                 jieguo = a1+b1;
  26.                                 out(jieguo);
  27.                         }
  28.                         else if (c1==2)
  29.                         {
  30.                                 jieguo = a1-b1;
  31.                                 out(jieguo);
  32.                         }
  33.                         else if (c1==3)
  34.                         {
  35.                                 jieguo = a1*b1;
  36.                                 out(jieguo);
  37.                         }
  38.                         else if (c1==4)
  39.                         {
  40.                                 jieguo = a1/b1;
  41.                                 out(jieguo);
  42.                         }
  43.                         else
  44.                                 System.out.print("输入值错误");

  45.                         

  46.                         System.out.print("继续请输入1,结束程序请按输入任意键");

  47.                         Scanner d = new Scanner(System.in);
  48.                         int d1 = d.nextInt();

  49.                         if (d1!=1)
  50.                         {
  51.                                 bl=false;
  52.                         }
  53.                         }
  54.                 }
  55.         public static void out(int jieguo)
  56.                 {
  57.                         System.out.println("结果为:"+jieguo);
  58.                 }
  59. }</p><p>
  60. </p><p>
  61. </p><p>你循环大括号范围弄错啦,真粗心
  62. </p>
复制代码





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