我正在使用Eclipse IDE,我正试图showSaveDialog(null)从另一个方法调用,而这个方法又是从main调用的,但是当我调用它时没有任何反应.
主要:
public static void main(String[] args) {
Main main = new Main();
main.pt = main.new PlayThread();
main.generateSound(getSamples(2), 500);
main.play(main.sound, 1);
if(new Scanner(System.in).nextLine().equals("save")){
System.out.println(main.save());
}
}
Run Code Online (Sandbox Code Playgroud)
调用之前的所有代码都main.save()可以正常工作,并且main.save()像这样开始:
public boolean save(){
System.out.println("Calling save");
try{
String saveName = getSaveTo("C:/");
System.out.println("I'm here now");
Run Code Online (Sandbox Code Playgroud)
虽然getSaveTo()看起来像:
public String getSaveTo(String def){
JFileChooser chooser = new JFileChooser();
System.out.println("Save called");
//chooser.setCurrentDirectory(new File(def));
int resp = chooser.showSaveDialog(null);
if(resp == JFileChooser.APPROVE_OPTION){
return chooser.getSelectedFile() + ".wav";
}else return null;
}
Run Code Online (Sandbox Code Playgroud)
在执行前几个函数后main …
如果在Java中的函数内声明了一个变量,那么该函数完成时是否会自动释放该变量而不管其类型如何?一旦原始类型,非原语Object和/或array任何一个原语占用了内存,或者Objects一旦退出该变量的范围就会被释放?
我制作了一个函数(Java),它应该bytes从文件中读取并将它们打印到控制台:
public void loadPixels(int size){
ClassLoader cl = this.getClass().getClassLoader();
pixels = new byte[size];
try{
InputStream stream = cl.getResource("res/" + fileName).openStream();
stream.read(pixels);
System.out.println(pixels.toString());
stream.close();
}catch(Exception e){
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,我要NullPointerException上线了
InputStream stream = cl.getResource("res/" + fileName).openStream();
Run Code Online (Sandbox Code Playgroud)
对于我尝试打开的文件,名称是“font.spt”,这也是fileName. 该文件位于项目根目录的“res”文件夹中,我目前使用的是 Eclipse IDE。
我对文件路径的方法是错误的,还是其他问题?
回顾一下:fileName指向“font.spt”,它位于 bin 目录中的“res”文件夹下。
编辑:包含 .spt 文件的“res”文件夹现在位于项目的“bin”下,而不是根目录下,但我仍然收到错误消息。当从 IDE 运行或作为导出的 .jar 运行时,我仍然得到NullPointerException,我应该把这些文件放在哪里?有人可以给我截图或示例吗?
我有一个简化的C程序,它演示了这个问题.当我尝试realloc使用指针调用时,它工作正常,但如果我尝试向指针添加偏移量(即从数组中的后一个元素开始),它将失败.
# include <stdio.h>
# include <stdlib.h>
struct arbNum{
unsigned char* bytes;
long len;
};
void trim(struct arbNum* num){
printf("%d,%d,%d,%d\n",num->bytes,num->bytes[0],num->bytes[1],num->len);
unsigned char* nbytes = realloc(num->bytes,num->len);
printf("Realloc successful.\n");
num->bytes = nbytes;
}
int main(void){
struct arbNum p = {calloc(2,1),2};
trim(&p);
}
Run Code Online (Sandbox Code Playgroud)
例如,这输出:
9247152,0,0,2
Realloc successful.
Run Code Online (Sandbox Code Playgroud)
但是,从上面的代码中,更改realloc(num->bytes,num->len);为realloc(num->bytes+1,num->len-1);将输出/行为更改为:
10361264,0,0,2
Run Code Online (Sandbox Code Playgroud)
然后崩溃.可能我根本不理解指针,但我目前的理解是它们本质上是存储另一个值的地址.在这种情况下,为什么将pointer+1not point指向存储在高于指针的地址中的值,或者换句话说,将作为该指针所指向的数组的第一个元素.我要做的是num.bytes将从第一个元素开始指向的数组复制到内存中的新地址,但显然,由于某种原因,它失败了.
我正在尝试编写一个非常简单的 Android 应用程序,它使用 OpenGL 显示绿色背景并在其上渲染单个青色三角形,以验证我的代码是否正确显示某些几何图形。我遇到了一个问题,即对glClearColor/glClear设置背景的调用可见并使视图按预期变为绿色,但glDrawArrays在将第 0 个属性数组指向包含FloatBuffer顶点坐标后的调用没有看到明显的变化。我的顶点着色器所做的就是将位置作为 avec4传递给片段着色器,片段着色器总是将输出颜色设置为青色,因此我希望看到带有一个青色三角形的绿色视图,但我只看到绿色背景,并且我不确定为什么。
主要活动文件(省略导入):
setupDefaultProgram()
}
override fun onSurfaceChanged(gl: GL10?, width: Int, height: Int) {
GLES30.glViewport(0, 0, width, height)
}
override fun onDrawFrame(gl: GL10?) {
glRenderer.renderFunc()
}
}
Run Code Online (Sandbox Code Playgroud)
渲染器代码:
class GlRenderer {
companion object {
// Pass through position and UV values
val vertexSource = """
#version 300 es
in vec2 position;
void main() {
gl_Position = vec4(position, -0.5, 1.0);
}
""".trimIndent()
// Eventually get the texture …Run Code Online (Sandbox Code Playgroud) 好的,因此我正在尝试制作一个可处理.wav文件的程序,并且已经看到了此问题/答案,但是我不确定是标题中的每个数据指的是什么。例如,“块”指的是什么?那是特定数量的位/字节吗?
如果有人能至少以本问题中使用的格式告诉我,除了常量String Literals和“数据”数组之外,每个引用到.wav的数据是什么?特别是,我特别想知道什么是“块”,以及所有通道的采样率,字节率,每个采样的字节和每个采样的字节有何关系?(我怀疑字节速率是采样率*每个采样的字节,但是“针对所有渠道”呢?)
任何帮助表示赞赏。
我正在考虑编写一个可能使用本机代码的Java应用程序(最有可能用c(++)编写,而不是汇编),我希望看到这样做的优点和缺点.我知道本机代码旨在在特定的机器/机器规格上运行,而不是由JVM运行的代码,JVM当然是虚拟机.如果我理解正确,在其本机运行的本机代码运行速度比字节码快,这是正确的吗?
基本上,如果我正在编写程序,是否值得使用本机代码进行某些计算和一些其他函数来尝试减少所需的时间和处理器的压力?如果我使用本机代码(如果我只有我的系统来编写/测试代码),是否有一种可靠的方法使其适用于几乎所有系统?
java ×5
c ×2
allocation ×1
android ×1
arrays ×1
audio ×1
byte ×1
c++ ×1
classloader ×1
file ×1
file-io ×1
function ×1
getresource ×1
header ×1
jfilechooser ×1
kotlin ×1
memory ×1
native ×1
native-code ×1
opengl-es ×1
pointers ×1
realloc ×1
scope ×1
swing ×1
wav ×1