Java 读取十六进制文件并将其转换为十进制
当读取包含基数16的文件时,我的扫描器只读取偶数,对奇数抛出无此元素异常。。。我是java新手,所以这可能很简单,但我不知所措。。。我目前的代码如下Java 读取十六进制文件并将其转换为十进制,java,java.util.scanner,Java,Java.util.scanner,当读取包含基数16的文件时,我的扫描器只读取偶数,对奇数抛出无此元素异常。。。我是java新手,所以这可能很简单,但我不知所措。。。我目前的代码如下 import java.util.Scanner; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.NoSuchElementException; public class HexToDe
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.NoSuchElementException;
public class HexToDecimalConverter {
public static void main(String[] args) {
try {
Scanner HexFile = new Scanner(new File("Hexidecimal.txt"));
do {
String Hex = HexFile.next();
System.out.println(Hex);
int outputDecimal = Integer.parseInt(Hex, 16);
System.out.println(outputDecimal);
} while (HexFile.next() != " ");
} catch (FileNotFoundException fileNotFoundExc) {
System.out.println("file not found");
System.exit(0);
} catch (IOException IOExc) {
System.out.println("IO Exception");
System.exit(0);
} catch (NoSuchElementException noSuchElementExc){
System.out.println("No Such Element");
System.exit(0);
}
{
}
}
}
你的情况:
} while (HexFile.next() != " ");
} while (HexFile.hasNext());
还读取十六进制数并丢弃它(因为您不会将其返回值存储在任何位置)。这解释了为什么代码只打印偶数
而是使用以下条件:
} while (HexFile.next() != " ");
} while (HexFile.hasNext());
只测试是否有更多令牌,但如果有更多令牌,则不读取或丢弃下一个令牌
此外,您可能希望使用while
循环,在读取之前进行测试,因为文件可能不包含任何内容,例如:
while (HexFile.hasNext()) {
String Hex = HexFile.next();
// rest of your code
}
这是因为您两次调用HexFile.next()
从如下更改代码开始:
String Hex = HexFile.next();
while (Hex!= " ") {
System.out.println(Hex);
int outputDecimal = Integer.parseInt(Hex, 16);
System.out.println(outputDecimal);
String Hex = HexFile.next();
}