将变量设置为类外的System.in

时间:2017-10-14 17:27:55

标签: java inputstream

我只能访问更改代码编写的类以外的代码:

BufferedReader br=new BufferedReader(new InputStreamReader(in));

由于inputStreamReader构造函数只接受InputStreams,如何在另一个类中设置一个变量来引用一个像 System.in 这样的InputStream?注意:变量' in '如果有帮助的话还没有宣布。

class Prime {        
    void checkPrime(int... possi) {
        for(int item: possi) {
            for(int i =0; i<item; i++){
                if(i>2 & (item % i == 0)){
                    System.out.print(item + " ");
                    break;
                }
            }
        }
        System.out.println();
    }
}
public class Solution {

    public static void main(String[] args) {
        try{
        BufferedReader br=new BufferedReader(new InputStreamReader(in));
        int n1=Integer.parseInt(br.readLine());
        int n2=Integer.parseInt(br.readLine());
        int n3=Integer.parseInt(br.readLine());
        int n4=Integer.parseInt(br.readLine());
        int n5=Integer.parseInt(br.readLine());
        Prime ob=new Prime();
        ob.checkPrime(n1);
        ob.checkPrime(n1,n2);
        ob.checkPrime(n1,n2,n3);
        ob.checkPrime(n1,n2,n3,n4,n5);  
        Method[] methods=Prime.class.getDeclaredMethods();
        Set<String> set=new HashSet<>();
        boolean overload=false;
        for(int i=0;i<methods.length;i++)
        {
            if(set.contains(methods[i].getName()))
            {
                overload=true;
                break;
            }
            set.add(methods[i].getName());

        }
        if(overload)
        {
            throw new Exception("Overloading not allowed");
        }
        }
        catch(Exception e)
        {
            System.out.println(e);
        }
    }

}

2 个答案:

答案 0 :(得分:0)

啊,当奥列格说&#39;在&#39;需要是一个静态字段,我意识到你可以导入 static java.lang.System。*;所以&#39; System.in&#39;被&#39;替换为&#39;。

答案 1 :(得分:0)

您可以使用静态导入。

这里的Static Import wiki链接用一个例子解释了Java中的静态导入。 使用静态导入时要小心,因为这可能会导致模糊问题。