我收到此错误:
Information:Using javac 1.8.0 to compile java sources
Information:java: Errors occurred while compiling module 'HelloWorld'
Information:Compilation completed with 2 errors and 0 warnings in 6 sec
Information:2 errors
Information:0 warnings
C:\Users\Raj\IdeaProjects\HelloWorld\src\CopyCharacters.java
Error:(18, 29) java: cannot find symbol
symbol: variable c
location: class CopyCharacters
Error:(21, 30) java: cannot find symbol
symbol: variable c
location: class CopyCharacters
我从这个doc做练习,现在当我使用intellij idea IDE运行我的程序时,它给了我这个错误..
这是我的源代码:
import java.io.*;
public class CopyCharacters {
public static void main(String[] args) throws IOException{
FileReader inputstream=null;
FileWriter outputstream=null;
try{
inputstream=new FileReader("D://raj.txt");
outputstream=new FileWriter("D://raj1.txt");
int c;
while((c=inputstream.read())!=-1){
outputstream.write(c);
}
}finally{
if(inputstream!=c){
inputstream.close();
}
if(outputstream!=c){
outputstream.close();
}
}
}
}
EDITED :
根据@I希望我能想到一个好的答案它可以正常工作,但它显示出新的错误:
Exception in thread "main" java.lang.ClassNotFoundException: ArrayDemo
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:259)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:116)
答案 0 :(得分:1)
改变你最后阻止
}finally{
if(inputstream!=null){
inputstream.close();
}
if(outputstream!=null){
outputstream.close();
}
}
为什么要将流与int进行比较?
执行此操作后,您会发现您可以保留c
的声明。
答案 1 :(得分:0)
move int c;到外面尝试阻止
import java.io.*;
public class CopyCharacters {
public static void main(String[] args) throws IOException{
FileReader inputstream=null;
FileWriter outputstream=null;
int c=0;
try{
inputstream=new FileReader("D://raj.txt");
outputstream=new FileWriter("D://raj1.txt");
//int c;
while((c=inputstream.read())!=-1){
outputstream.write(c);
}
}finally{
if(inputstream!=c){
inputstream.close();
}
if(outputstream!=c){
outputstream.close();
}
}
}
}
答案 2 :(得分:0)
我不明白为什么要尝试将int
与Reader
进行比较
if(inputstream!=c){
它们是不兼容的,无法进行比较,它没有意义。
由于您使用的是Java 1.8,因此您可以利用try-with-resource
功能,该功能会自动关闭您的流,例如......
try (FileReader inputstream = new FileReader("D://raj.txt")) {
try (FileWriter outputstream = new FileWriter("D://raj1.txt")) {
int c;
while ((c = inputstream.read()) != -1) {
outputstream.write(c);
}
} finally {
}
} finally {
}
答案 3 :(得分:-1)
在这里,您在TRY块中声明变量C.在TRY之外无法访问。在这里你可以在Finally块中访问它,它会给你错误。全局声明int c。