尝试执行 Java 函数但失败



我试图通过尝试并查看会发生什么来弄清楚我是否理解各种Java内容(然后,不可避免地,试图找出出了什么问题)。我想我不理解函数,因为我所做的每一次尝试都让DrJava犹豫不决。

我现在正在尝试做的最接近工作的工作是

import java.awt.Color;
public class Functional { 
  int r;
  int g;
  int b;
  public  int re(int r){
    r = (int)(Math.random() * (255 - 0)) + 0;
   return r;
  }
  public  int gr(int g){
    g = (int)(Math.random() * (255 - 0)) + 0;
    return g;
  }
  public  int bl(int b){
    b = (int)(Math.random() * (255 - 0)) + 0;
    return b;
  }
  public  void main(String[] args) { 
    StdDraw.setPenColor(new Color (r, b, g));
    StdDraw.filledCircle(.5, .5, .6);
    StdDraw.setPenColor( new Color (r, g, b));
    StdDraw.filledCircle(.5, .5, .2);
  }  
}

它可以编译,但是当我尝试运行它时,java barfs。

编辑:我不知道这个专业术语是什么,老师只是在屏幕上喷出红色代码时称之为barfing。

编辑2:仍然重新添加静态的barfs。新的错误消息是

>java.lang.NullPointerException
>at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>at java.lang.reflect.Method.invoke(Unknown Source)
>at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

编辑3:

(另外,如果你没有任何严肃的编程背景,不要试图像那样学习。>事情可能会变得棘手。

但。。。但是这门课是CS入门...

我不明白函数和方法之间有什么区别,或者如果你不启动一个全新的程序,"创建类的新实例"是什么意思。

main 方法不是静态的,它不会创建类 Function 的实例。

试试这个:

import java.awt.Color;
public class Functional { 
  int r;
  int g;
  int b;
  public int re(){
    return (int)(Math.random() * (255 - 0)) + 0;
  }
  public int gr(){
    return (int)(Math.random() * (255 - 0)) + 0;
  }
  public int bl(){
    return (int)(Math.random() * (255 - 0)) + 0;
  }
  public static void main(String[] args) { 
     Functional f = new Functional();
     f.r = f.re();
     f.g = f.gr();
     f.b = f.bl();
    StdDraw.setPenColor(new Color (f.r, f.b, f.g));
    StdDraw.filledCircle(.5, .5, .6);
    StdDraw.setPenColor( new Color (f.r, f.g, f.g));
    StdDraw.filledCircle(.5, .5, .2);
  }  
}

您可能还会使方法re()gr()bl()静态,因为它们不使用类实例的任何字段。

你用什么Java书来学习?

使主方法成为静态方法。创建类的新实例。(你应该在另一个方法中移动主函数内的东西,是的,它是一个方法,而不是一个函数。另外,如果你没有任何严肃的编程背景,不要试图像那样学习。事情可能会变得棘手。请记住,谷歌和文档是你的朋友。

正如 mwhs 所说,您的 main 方法不是静态的,并且永远不会调用用于生成颜色的函数。这意味着您的值为空。作为提示,您不必在构造函数中包含变量名称。

相关内容

  • 没有找到相关文章

最新更新