我已经创建了一个用Java读取文件的方法.有问题的文件包含一系列具有以下格式的书籍:lastname | firstname | title.但是,当我尝试使用该方法时,我收到一条错误消息.我的方法如下:
private final static char END_SIGN = '|';
void readBookFile(String readFile) {
try {
FileReader textFileReader = new FileReader(readFile);
BufferedReader textReader = new BufferedReader(textFileReader);
int numberOfBooks = Integer.parseInt(textReader.readLine());
for (int i = 0; i < numberOfBooks; i++) {
String post = textReader.readLine();
int index1 = post.indexOf(END_SIGN);
int index2 = post.indexOf(END_SIGN, index1 + 1);
String lastname = post.substring(0, index1);
String firstname = post.substring(index1 + 1, index2);
String title = post.substring(index2 + 1);
Book book = new Book(lastname, …Run Code Online (Sandbox Code Playgroud) 我有一个关于vpa可用于评估MatLab中符号表达式的命令的简短问题.
我的教科书说明如下:
"使用诸如sqrt数字之类的函数时需要小心,默认情况下会产生双精度浮点数.您需要将此类输入vpa作为符号字符串传递给正确的评估:vpa('sqrt(5)/pi')."
我不太明白这里的行话.为什么对于大多数输入我得到确切同样的答案我是否键入vpa(input)或vpa('input'),而不是平方根?例如,如果我输入vpa(sin(pi/4))或者vpa('sin(pi/4)'),我得到完全相同的答案,但如果我输入上面给出的问题vpa(sqrt(5)/pi),我得到的答案与我输入时的答案相同vpa('sqrt(5)/pi').
如果有人能够比我上面的书更详细地解释这一点,我将非常感激!
我在将Horner算法的伪代码转换为MatLab中的正确代码时遇到了一些麻烦.我认为我的困惑源于这样一个事实:代码假定第一个向量条目可以用0引用,而在MatLab中,这必须是1.我试图相应地修改我的代码,但是我没有得到它工作正常.pseducode如下:
input n, (a_i, : 0 ? i ? n), z_0
for k = 0 to n-1 do
for j = n-1 to k step -1 do
a_j = a_j + z_0*a_(j+1)
end do
end do
output (a_i: 0 ? i ? n)
Run Code Online (Sandbox Code Playgroud)
这是我在MatLab中写这个的尝试,其中a是一个表示多项式系数的输入向量:
function x = horner(a,z_0)
n = length(a);
for k = 1:n-1
for j = n-1:-1:k
a(j) = a(j) + (z_0)*a(j+1);
end
end
x = a;
Run Code Online (Sandbox Code Playgroud)
我在向量上尝试了这个,a = [1 -4 7 -5 -2]它表示多项式中的系数.我也定了 …
我遇到以下问题时遇到轻微困难.
我初始化了一个名为numberArray的布尔数组,其中包含31个索引.用户应该在1到30之间输入5位数,并且每次输入数字时,程序应该将正确的索引设置为true.例如,如果我输入5则:
numberArray [5] = true;
但是,如果用户第二次输入值5,则应该向用户发出已经输入该号码的消息,因此用户必须选择不同的值.我试图创建一个循环如下:
public void enterArrayValues() {
for(int i = 1; i < 6; i++) {
System.out.print("Give " + i + ". number: ");
int enteredNumber = input.nextInt();
while (numberArray[enteredNumber] = true) {
System.out.println("This number has already been chosen.");
System.out.print("Give " + i + ". number again: ");
enteredNumber = input.nextInt();
}
numberArray[enteredNumber] = true;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行程序时,无论我输入什么,我都会自动收到消息"已经选择了数字".即使是我第一次输入数字.我不懂.默认情况下,布尔数组中的所有值都不是false吗?
如果有人能帮助我,我将不胜感激!
我在使Java方法正常工作方面遇到了一些问题.在程序中,我创建了一个由不同长度的许多不同单词组成的数组.我正在处理的方法应该读取字长,字母和位置的用户输入,然后Java将打印出与这三个参数匹配的任何单词(例如,如果用户键入字长4,字母A和位置2,并且将打印出包含位置2处字母A的长度为4的单词.
无论如何,我创建的方法如下所示:
public static void inputMethod(int length, char letter, int position){
for (int index = 0; index < wordTable.length; index++) {
if (length == wordTable[index].length() && letter == wordTable[index].charAt(position) )
System.out.println(wordTable[index]); }
Run Code Online (Sandbox Code Playgroud)
此方法适用于某些输入,但对于其他输入,我收到一条错误消息,如下所示:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5
at java.lang.String.charAt(Unknown Source)
at Wordarray.inputMethod(Wordarray.java:153)
at Wordarray.main(Wordarray.java:61)
Run Code Online (Sandbox Code Playgroud)
如果有人能向我解释我如何解决这个问题,我将不胜感激!就像我说的那样,我只收到某些输入信息.对于其他输入,程序就像它应该的那样工作.