Редактировать NoSuchElementException: Всего метода:.множественных .Надеть дает
public static String[] singlemultiplet(String filename, int numofzeros) throws IOException {//isolate notes between brackets
Scanner inputmeasure = new Scanner(new DataInputStream(new FileInputStream(filename)));
InputStream is = new BufferedInputStream(new FileInputStream(filename));
BufferedReader bReader = new BufferedReader(new InputStreamReader(is));
StringBuffer sbfFileContents = new StringBuffer();
String line = null;
int lineCount = 0;
int j = 0;
int[] cmn = new int[countbrackets(filename)];
String[] numbers = new String[40];
String[][] matrix = new String[20][120];
String[][] matrix2 = new String[20][120];
String[][] matrix3 = new String[20][120];
line = inputmeasure.useDelimiter("\n").next();
Scanner s = new Scanner(line).useDelimiter("U");
matrix[0][0] = s.useDelimiter("\r").next();
String ubar = "U|";
matrix2[0][0] = matrix[0][0].replace("\\),","U").replaceAll("\\)","U").replace(ubar,"U");
matrix3[0][0] = matrix2[0][0].replace("|","U");
Scanner s2 = new Scanner(matrix3[0][0]).useDelimiter("U");
String brack = "(";
String[] multiplet = new String[countmultipletsandmeasures(filename) + numofzeros];
String[] multiplet2 = new String[countmultipletsandmeasures(filename) + numofzeros];
Arrays.fill(multiplet, "");
int cmampluszeros = countmultipletsandmeasures(filename) + numofzeros;
for (int i = 0; i < cmampluszeros; i++)
{
matrix3[0][0] = s2.useDelimiter("U").next();
multiplet[i] = matrix3[0][0];
}
lineCount++;
sbfFileContents.append(line);
String strContent = sbfFileContents.toString();
try {
return multiplet;
} finally {
is.close();
}
}
Я хочу добиться того, что метод возвращает массив, который содержит multiplet
куски линий Matrix3[0]
читать в метод должен вырезать строку, как указано ниже, поэтому при встрече «)» или «|».
Когда я пытаюсь прочитать в первой строке Matrix3[0]
:
(A#,A#,A#),(B#,B#,C#),(B#,B#,C#),(Bb,Bb,Cb)|(Ab,Ab,Ab),(Bb,Bb,Cb),(Bb,Bb,Cb),(Bb,Bb,Cb)|
программа дает Куски
multiplet[i]
в
multiplet: (A#,A#,A#
multiplet: ,(B#,B#,C#
multiplet: ,(B#,B#,C#
multiplet: ,(Bb,Bb,Cb
multiplet: (Ab,Ab,Ab
multiplet: ,(Bb,Bb,Cb
multiplet: ,(Bb,Bb,Cb
multiplet: ,(Bb,Bb,Cb
, который является правильным. Но когда я пытаюсь читать: (A#,A#,A#),(B#,B#,C#),(B#,B#,C#),(Bb,Bb,Cb)|A#,B#,C#,D#, E#,F#,G#, | ,A, , , , , , , , , , , , , , |
Я получаю NoSuchElementException
. Правильный результат будет следующим:
multiplet: (A#,A#,A#
multiplet: ,(B#,B#,C#
multiplet: ,(B#,B#,C#
multiplet: ,(Bb,Bb,Cb
multiplet: A#,B#,C#,D#, E#,F#,G#,
multiplet: ,A, , , , , , , , , , , , , ,
Кто-нибудь знает, почему и что я должен сделать, чтобы получить правильный результат?
Edit:
Debugging даст мне следующую трассировку стека:
Breakpoint хит: "нить = главный", IOguitar.singlemultiplet(), строка = 2769 BCI = 306 2769 matrix3 [0 ] [0] = s2.useDelimiter («U»). Next();
Главный [1] шаг
Шаг завершена: "поток = главный", IOguitar.singlemultiplet(), строка = 2770 BCI = 322 2770 мультиплет [I] = matrix3 [0] [0] ;
Основной шаг [1]
Шаг завершена: "поток = главный", IOguitar.singlemultiplet(), строка = 2767 BCI = 333 2767 для (INT I = 0; I < cmampluszeros ; я ++)
Основной [1] шаг
Шаг завершен: Точка останова ударил: «ю read = main ", IOguitar.singlemultiplet(), строка = 2,769 bci = 306 2,769 matrix3 [0] [0] = s2.useDelimiter (" U "). next();
Основной [1] шаг
Шаг завершена: "поток = главный", IOguitar.singlemultiplet(), line = 2,770 bci = 322 2,770 мультиплет [i] = matrix3 [0] [0];
Основной шаг [1]
Шаг завершена: "поток = главный", IOguitar.singlemultiplet(), строка = 2767 BCI = 333 2767 для (INT I = 0; I < cmampluszeros ; я ++)
Основной [1] шаг
Шаг завершен: Точка останова ударил: «ю read = main ", IOguitar.singlemultiplet(), строка = 2,769 bci = 306 2,769 matrix3 [0] [0] = s2.useDelimiter (" U "). next();
Основной шаг [1]
Шаг завершена: "поток = главный", IOguitar.singlemultiplet(), строка = 2770 BCI = 322 2770 мультиплет [I] = matrix3 [0] [ 0];
Основной шаг [1]
Шаг завершена: "поток = главный", IOguitar.singlemultiplet(), строка = 2767 BCI = 333 2767 для (INT I = 0; I < cmampluszeros ; я ++)
Основной [1] шаг
Шаг завершен: Точка останова ударил: «ю read = main ", IOguitar.singlemultiplet(), строка = 2,769 bci = 306 2,769 matrix3 [0] [0] = s2.useDelimiter (" U "). next();
Основной шаг [1]
Шаг завершена: "поток = главный", IOguitar.singlemultiplet(), строка = 2770 BCI = 322 2770 мультиплет [I] = matrix3 [0] [ 0];
Основной шаг [1]
Шаг завершена: "поток = главный", IOguitar.singlemultiplet(), строка = 2767 BCI = 333 2767 для (INT I = 0; I < cmampluszeros ; я ++)
Основной [1] шаг
Шаг завершен: Точка останова ударил: «ю read = main ", IOguitar.singlemultiplet(), строка = 2,769 bci = 306 2,769 matrix3 [0] [0] = s2.useDelimiter (" U "). next();
Основной [1] шаг
Шаг завершена: "поток = главный", IOguitar.singlemultiplet(), line = 2,770 bci = 322 2,770 мультиплет [i] = matrix3 [0] [0];
Основной шаг [1]
Шаг завершена: "поток = главный", IOguitar.singlemultiplet(), строка = 2767 BCI = 333 2767 для (INT I = 0; I < cmampluszeros ; я ++)
Основной [1] шаг
Шаг завершен: Точка останова ударил: «ю read = main ", IOguitar.singlemultiplet(), строка = 2,769 bci = 306 2,769 matrix3 [0] [0] = s2.useDelimiter (" U "). next();
Основной шаг [1]
Шаг завершена: "поток = главный", IOguitar.singlemultiplet(), строка = 2770 BCI = 322 2770 мультиплет [I] = matrix3 [0] [ 0];
Основной шаг [1]
Шаг завершена: "поток = главный", IOguitar.singlemultiplet(), строка = 2767 BCI = 333 2767 для (INT I = 0; I < cmampluszeros ; я ++)
Основной [1] шаг
Шаг завершен: Точка останова ударил: «ю read = main ", IOguitar.singlemultiplet(), строка = 2,769 bci = 306 2,769 matrix3 [0] [0] = s2.useDelimiter (" U "). next();
Основной шаг [1]
Шаг завершена: "поток = главный", IOguitar.main(), строка = 2662 BCI = 35573 2662 e.printStackTrace();
Основной [1] шаг
java.util.NoSuchElementException на java.util.Scanner.throwFor (Scanner.java:838) на java.util.Scanner.next (сканера. Java: тысяча триста сорок семь) на IOguitar.singlemultiplet (IOguitar.java:2769) на IOguitar.countmultipletn (IOguitar.java:3121) на IOguitar.main (IOguitar.java:187)
Шаг завершена: " нить = основной», IOguitar.main(), строка = 2668 BCI = 35578 2668}
основной [1]
Но что я должен делать?
Можете ли вы опубликовать трассировку стека? – raptortech97
Java: пишите один раз, отлаживайте всюду. – Maroun
Вы пробовали отлаживать свою программу шаг за шагом, чтобы лучше понять, что происходит? – assylias