我的代码:
// Import scanner class
import java.util.Scanner;
// Create class and method
class Main {
public static void main(String[] args) {
Scanner inp = new Scanner(System.in);
System.out.println("Press any key to start");
String key = inp.nextLine();
System.out.println("\nEnter the amount of each item");
System.out.println("Upto 5 inputs are allowed!\n");
int counter = 0;
int index = 0;
double[] numbers = new double[5];
boolean go = true;
while(go) {
String value = inp.nextLine();
int indexOfH = value.indexOf("h");
boolean containsH = indexOfH == 0 || indexOfH == (value.length()-1);
if(containsH){ //Validate h at beginning or end
numbers[index] = Double.parseDouble(value.replace("h", ""));
System.out.println("HST will be taken account for this value");
}
counter++;
if (counter == 5){
go = false;
}
}
System.out.println("Printing Valid values");
for(int i=0; i< numbers.length; i++) {
System.out.println(numbers[i]);
}
}
}
我的代码中的这一行是什么意思?:` `numbersindex = Double.parseDouble(value.replace("h",""));
我是java数组的新手,你能用简单易懂的方式解释一下吗?
发布于 2020-10-09 15:03:07
int indexOfH = value.indexOf("h");
boolean containsH = indexOfH == 0 || indexOfH == (value.length()-1);
indexOfH
是在字符串中找到"h"
的字符位置。更清楚的是:
int indexOfH = value.indexOf("h");
boolean containsH = value.startsWith("h") || value.endsWith("h");
很明显"h“是个标记。
value
被剥离为
String numValue = value.replace("h", "");
然后可以转换为double:
numbers[index] = Double.parseDouble(numValue);
(因此,value
可能包含"3.14h"
或"h2.89"
。)
另一个注意事项:value.indexOf('h')
可能更符合逻辑,因为现在查找的是字符的位置,而不是整个字符串。
https://stackoverflow.com/questions/64282463
复制