Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中如何从同一个包中的另一个类访问变量_Java_Arrays_Class_Bufferedreader - Fatal编程技术网

在java中如何从同一个包中的另一个类访问变量

在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

我想访问newrepeatedcount类中的类
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);
}

}