在java中如何从同一个包中的另一个类访问变量
我想访问newrepeatedcount类中的类在java中如何从同一个包中的另一个类访问变量,java,arrays,class,bufferedreader,Java,Arrays,Class,Bufferedreader,我想访问newrepeatedcount类中的类TotalNoofWord。 我想打印类Totalnoofwordsmegring的“a” System.out.println("( "+file1.getName() +" )-" +"Total words counted:"+total); 在课堂上newrepeatedcount 因此,我可以运行获取System.out.println(“(“+file1.getName()+”)-“+”单词总数=“+a+”计算的重复单词总数:“%+T
TotalNoofWord
。
我想打印类Totalnoofwords
megring的“a”
System.out.println("( "+file1.getName() +" )-" +"Total words counted:"+total);
在课堂上newrepeatedcount
因此,我可以运行获取System.out.println(“(“+file1.getName()+”)-“+”单词总数=“+a+”计算的重复单词总数:“%+Total”)代码>
下面是我想要的1个输出的片段
(filenameBlog 39.txt)-单词总数=83,统计的重复单词总数:4
欢迎任何建议。
我是java的初学者。
下面是我的两个班级代码:
Totalnoofwords.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import org.apache.commons.io.FileUtils;
public class Totalnoofwords
{
public static void main(String[] args)
{
FilenameFilter filter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
};
File folder = new File("E:\\testfolder");
File[] listOfFiles = folder.listFiles(filter);
for (int i = 0; i < listOfFiles.length; i++) {
File file1 = listOfFiles[i];
try {
String content = FileUtils.readFileToString(file1);
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader ins = null;
try {
ins = new BufferedReader (
new InputStreamReader(
new FileInputStream(file1)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String line = "", str = "";
int a = 0;
int b = 0;
try {
while ((line = ins.readLine()) != null) {
str += line + " ";
b++;
}
} catch (IOException e) {
e.printStackTrace();
}
StringTokenizer st = new StringTokenizer(str);
while (st.hasMoreTokens()) {
String s = st.nextToken();
a++;
}
System.out.println(" Total no of words=" + a );
}
}
}
无法从其他类访问主函数中的变量。
因此,您可以修改Totalnoofwords.java之类的内容
package Packagename;
public class Totalnoofwords
{
static int a = 1;
public void somename(){
Totalnoofwords A=new Totalnoofwords();
A.a+=5;
System.out.println("a"+A.a);
}
}
而您的newrepeatedcount.java
package Packagename;
public class newrepeatedcount {
public static void main(String[] args){
Totalnoofwords B=new Totalnoofwords();
B.somename();
System.out.println("a:"+B.a);
}
}
看起来您在同一个包中有两个主要方法,我不确定您是否希望这样做,但这不起作用,因为您没有重载这些方法。例如,如果将另一个类更改为接受额外参数public static void main(字符串[]args1,字符串[]args2),则当前一个类中有public static void main(字符串[]args)
此外,为了访问您的第二个类,如上所述,您将使用
Totalnoofwords totalNoofWords = new Totalnoofwords();
totalNoofWords.accessSomething();
但这不起作用,因为您没有构造函数 你的代码有冗余。由于这两个类都在读取包含内容的目录中的整个文件,接下来将内容拆分为单词。或者我可以创建一个主类并调用这两个类变量吗?这可能吗?为什么是静态变量?当我们在newrepeatedcunt.java中创建新实例时,a的更改值将仅适用于该实例。如果要保留该值,必须将其设置为静态,否则必须从methos somename()返回一个值,并将其存储在调用方法的变量中。我的意思是,我理解静态变量是作为类实例共享的,但是我认为一个带有getter和setter的简单成员变量会显示出跨类访问值的相同概念,即使getter setter会为对象的实例给出a的值。除非所有实例都访问同一变量。
package Packagename;
public class newrepeatedcount {
public static void main(String[] args){
Totalnoofwords B=new Totalnoofwords();
B.somename();
System.out.println("a:"+B.a);
}
}
Totalnoofwords totalNoofWords = new Totalnoofwords();
totalNoofWords.accessSomething();
package Packagename;
public class newrepeatedcount {
public static void main(String[] args){
Totalnoofwords B=new Totalnoofwords();
B.somename();
System.out.println("a:"+B.a);
}
}