gpt4 book ai didi

java - 从二进制字符串转换时出现 NumberFormatException

转载 作者:行者123 更新时间:2023-12-01 09:31:03 25 4
gpt4 key购买 nike

public class ACM_ICPC_TEAM {
public static void main(String[] args) {

Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
int M=sc.nextInt();
sc.nextLine();

String s[]=new String[N];
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++);
{
s[i]=sc.nextLine().toString();
}
}
BitSet b1=new BitSet(M);
BitSet b2=new BitSet(M);
BitSet b3=new BitSet(M);
int max=0,count=0,count1=0;
for(int i=0;i<N;i++)
{ b1=fromString(s[i]);
for(int j=i+1;j<N;j++)
{
b3=(BitSet) b1.clone();
b2=fromString(s[j]);
b3.or(b2);
count=b3.cardinality();
if(count>max)
{
max=count;
count1=1;
}
else if(count==max)
count1++;
}
}

System.out.println(count+"\n"+count1);
}

public static BitSet fromString(String s)
{
return BitSet.valueOf(new long[] { Long.parseLong(s,2) });
}
public static String toString(BitSet b)
{
return Long.toString(b.toLongArray()[0], 2);
}
}

当我传递大尺寸(~500)的二进制字符串时,我的fromString给我NumberFormatException,它对于较小长度的字符串绝对可以正常工作。

最佳答案

Java long 值是一个 64 位数字,即您最多可以在其中存储 64 位。 500 位的字符串根本无法用单个 long 表示,因此异常(exception)。

BitSet 可以表示任意长度的位集。不幸的是,BitSet 没有一种将一个 BitSet 附加到另一个 BitSet 的方法。因此,我要做的就是逐个字符地遍历 String,并根据需要设置或清除 BitSet 的第 n 位。

关于java - 从二进制字符串转换时出现 NumberFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39395720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com