在 class 之外将变量设置为 System.in
Setting a variable to System.in outside of the class
我只能访问 class 之外的更改代码,这行代码是这样写的:
BufferedReader br=new BufferedReader(new InputStreamReader(in));
由于 inputStreamReader 构造函数只接受 InputStreams,我如何在另一个 class 中设置一个变量来引用像 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);
}
}
}
啊,当奥列格说 'in' 需要是一个静态字段时,我意识到你可以导入 static java.lang.System.*;以便 'System.in' 替换为 'in'.
您可以使用静态导入。
这里是 Static Import wiki link,它通过示例解释了 Java 中的静态导入。
使用静态导入时要小心,因为它可能会导致歧义问题。
我只能访问 class 之外的更改代码,这行代码是这样写的:
BufferedReader br=new BufferedReader(new InputStreamReader(in));
由于 inputStreamReader 构造函数只接受 InputStreams,我如何在另一个 class 中设置一个变量来引用像 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);
}
}
}
啊,当奥列格说 'in' 需要是一个静态字段时,我意识到你可以导入 static java.lang.System.*;以便 'System.in' 替换为 'in'.
您可以使用静态导入。
这里是 Static Import wiki link,它通过示例解释了 Java 中的静态导入。 使用静态导入时要小心,因为它可能会导致歧义问题。