java使用布尔值退出循环,然后重做循环
我对Java还相当陌生,所以我不知道太多新奇的东西,我有点被卡住了
我需要做的是,拿一个文本文件;将内容导入ArrayList
;检查每一行是否有两个“#”之间的特定Char
;然后再次检查ArrayList
中的每一行,以查看其中一行是否已经具有该Char
;如果是,那么我需要重新输入整个String
行并重新检查它;如果没有,那么我需要把它放在ArrayList
的底部,然后放到文本文件中
到目前为止,我已经到了需要检查输入行的Char
是否重复的部分,但是我只能重复一次。例如,如果我再次输入它,由于其中一个循环,我将得到一个索引AutofBoundsException。所以,我想我应该使用一个boolean
来退出循环并重新进入它们,但不幸的是,在进入整个String
一次之后,它要求我再次这样做以重复这个过程,因为我退出并进入了错误的循环,但我似乎无法确定是哪个循环
ArrayList<String> Prices = new ArrayList<String>();
try (BufferedReader br = new BufferedReader (new FileReader("file.txt"))){
String CurrentLine;
while ((CurrentLine = br.readLine()) != null){
Prices.add(CurrentLine);
}
}catch (IOException e) {
e.printStackTrace();
}
boolean CheckSequence = true;
boolean Redo = false;
String StringArrayPrices[] = new String[Prices.size()];
Scanner sc = new Scanner (System.in);
while (CheckSequence == true){
System.out.println("Insert product in the following format, 'Product#Letter#Number': ");
String ProductString = sc.nextLine();
char ProductArray[] = ProductString.toCharArray();
for (int i = 0; i < Prices.size(); i++){
StringArrayPrices[i] = Prices.get(i);
char CharArrayPrice[] = StringArrayPrices[i].toCharArray();
for (int j = 0; j < CharArrayPrice.length && Redo == false; j++){
if (CharArrayPrice[j] == '#' && CharArrayPrice[j+2] == '#'){
char TemporaryLetter = CharArrayPrice[j];
for (int k = 0; k < ProductArray.length && Redo == false; k++){
if (ProductArray[k] == '#' && ProductArray[k+2] == '#'){
char TemporaryLetter2 = ProductArray[k];
if (TemporaryLetter == TemporaryLetter2){
System.out.println("The letter is repeating. Enter product again or exit by writing '-1': ");
ProductString = sc.nextLine();
if (ProductString == "-1"){
CheckSequence = false;
}
Redo = true;
}
if (TemporaryLetter != TemporaryLetter2){
Prices.add(ProductString);
}
}
}
}
}
}
}
现在,当我重新输入String
时,我收到的第一条消息是“”以以下格式插入产品,'product#Letter#Number':“”,而不是重复的“”。再次输入产品或通过写入“-1”:“”退出
第一行应该只在我输入一个全新的String
时显示,而不是在重复上一行时显示
我希望我没有把这弄得太混乱
# 1 楼答案
并非所有的循环都是正确的
我不完全确定这个要求,但我认为这符合要求
请注意,您可能应该定义一个
Product
类来封装其中的大部分内容和助手一起
这可能需要一些错误处理
为了避免java 8的流,可以使用问题中使用的代码来构建
prices
和