代码可以很好地编译,但会出现运行时错误,如
Exception in thread "main" BitBin.IndexOutOfRangeException: out of range
at BitBin.decmalToBinary.birBin(decmalToBinary.java:52)
at BitBin.decmalToBinary.main(decmalToBinary.java:42)我不太确定问题是什么,因为我在代码中抛出了如下异常:对不起,当我输入除数字以外的任何东西时,它对我有异常,你能帮我吗?例如,我输入字符而不是数字
package BitBin;
import java.util.Scanner;
public class decimalToBinary {
static int decToBin (int n) {
int term = 0;
while (n != 0) {
term ++;
n /= 2;
}
return term;
}
static String ArrayBinToStr (int[] Array) {
String ret = "";
for (int i = Array.length-1; i >= 0; i--)
ret += Integer.toString(Array[i]);
return ret;
}
public static void main (String[] args) {
Scanner sc=new Scanner (System.in);
System.out.print ("Enter number : ");
int num = sc.nextInt();
int[] bin = new int[decToBin (num)];
int dup = num, el = -1;
while (dup != 0) {
int rem = dup % 2;
bin [++el] = rem;
dup /= 2;
}
String d2b = binBit(bin);
System.out.println("Binary of " + num + " is: " + d2b);
}
static String binBit(int []d2b) throws IndexOutOfRangeException{
Scanner sc=new Scanner (System.in);
System.out.print ("Enter bit: ");
int bit = sc.nextInt();
if(bit>d2b.length-1 || bit<0)
throw new IndexOutOfRangeException("out of range");
String rit="";
int i=bit;
if(d2b[i]== 0 )
System.out.println("bite " +i+ " om 0 ast.");
else
System.out.println("bite " +i+ " om 1 ast.");
for (i = d2b.length-1; i >= 0; i--){
rit+=Integer.toBinaryString(d2b[i]);
}
return rit;
}
}
}
SAMPLE INPUT FILE
Enter number:
Enter bit:发布于 2013-03-31 22:07:19
if(bit>d2b.length-1 || bit<0)此条件为真。所以它抛出了这个异常。
String d2b = binBit(bin);
并且您正在评估binBit(bin)方法if(bit>d2b.length-1 || bit<0)中的内容。所以我认为第一个条件总是为真,所以它抛出了异常。
发布于 2013-03-31 22:25:15
如果你输入的位对于这个数字来说太大,你得到的异常是一个正常的结果。例如,假设您输入"3“作为数字。那么d2b将是数组1,1,3的二进制表示。这意味着您可以输入值0或1。任何大于该值的值,您将从检查该条件的代码中获得异常:
if(bit > d2b.length - 1 || bit < 0)
throw new IndexOutOfRangeException("out of range");我用下面的输入运行了你的代码(有一些不重要的变化),它工作得很好!
Enter number : 255
Enter bit: 3
bite 3 om 1 ast.
Binary of 255 is: 11111111这能解答这个谜团吗?
https://stackoverflow.com/questions/15730160
复制相似问题