Предполагается, что main разбивает имя и фамилию и сохраняет фамилию в новом массиве. В моем коде есть логическая ошибка, потому что эта часть не печатается.
package names;
import java.io.*;
import java.util.*;
public class names {
public static void main(String[] args) throws FileNotFoundException {
final int TOTALNAMES=15;
String [] names = new String[TOTALNAMES];
String [] firstname = new String[TOTALNAMES];
//String
File file = new File ("Names12.txt");
Scanner read = new Scanner (file);
printHeading();
int i, cntr=0;
while(read.hasNext()&&cntr<TOTALNAMES){
cntr++;
read.nextLine();
}
String[] name = new String[cntr];
Scanner read1 = new Scanner(file);
for( i = 0; i<name.length; i++) {
name[i] = read1.next();
//System.out.println(name[i]);
}
//creating new string array to hold last name values
int j;
String[] lastname = new String[name.length];
for(j = 0; j < lastname.length; j++){
lastname[j]=names[i].substring(name[i].indexOf(" "+1));
System.out.println(lastname[j]);
}
}
//This method prints the heading centered
public static void printHeading () {
System.out.println("\t\t\t\tTable of Names");
}
//This method reads in the names from the file into an array
public static int readNames(Scanner keyboard, String[]names) throws FileNotFoundException {
int count = 0;
names = new String[15];
for (int i = 0; i < names.length; i++) {
names [i] = keyboard.nextLine();
System.out.println(names[i]);
count++;
}
return count;
}
}
My methods print, but the while loop is silent.
Кроме того, есть ли еще код для вашего цикла while? похоже, что вам не хватает концевой скобки. Не уверен, что у вас было больше кода, которым вы хотели бы поделиться.
Спасибо, я случайно отрезал последнюю фигурную скобку, когда копировал код.
Пожалуйста, поделитесь всем кодом.
Чтобы быстрее получить помощь, редактировать добавьте минимальный воспроизводимый пример или Короткий, автономный, правильный пример. Данные жесткого кода для замены текстового файла. @Sanjay: обратите внимание, что [mcve] в комментарии автоматически расширяется до минимальный воспроизводимый пример, и что людям, задающим вопросы, лучше не добавлять свой «весь код».




Похоже, ваша проблема заключается в вашей переменной count и вашем условии цикла while. Вы никогда не присваиваете значение count в main, затем позже вы присваиваете значение 0 j, а затем выполняете цикл while только тогда, когда count
но я вернул счет из метода. и я присвоил этому методу переменную count. Это неправильно?
Извините, я пропустил часть, где вы назначаете значение для подсчета. Однако, поскольку условие в вашем цикле while имеет &&count<j, условие никогда не будет истинным, так как j равно нулю, а count положителен или равен нулю. Вот почему ваше тело цикла while не выполняется
Внутри цикла while эта строка:
read.nextLine();
выполняет чтение строки, но нигде ее не сохраняет.
Также я вижу ненужные циклы и создание второго Scanner объекта, для чего?
Вам нужно прочитать все строки внутри массива names, а затем перебрать этот массив, чтобы извлечь фамилии.
Это можно сделать в одном цикле при чтении файла, но для удобства чтения я использую 2 цикла:
public static void main(String[] args) throws FileNotFoundException {
final int TOTALNAMES = 15;
int cntr = 0;
String [] names = new String[TOTALNAMES];
String [] firstname = new String[TOTALNAMES];
String [] lastname = new String[TOTALNAMES];
File file = new File("Names12.txt");
Scanner read = new Scanner(file);
printHeading();
while(read.hasNext() && cntr < TOTALNAMES){
cntr++;
names[cntr - 1] = read.nextLine();
}
read.close();
for(int i = 0; i < cntr; i++){
//firstname[i] = names[i].substring(0, names[i].indexOf(" "));
lastname[i] = names[i].substring(names[i].indexOf(" ") + 1);
System.out.println(lastname[i]);
}
}
Вы сделали это намного яснее для меня. Я продолжал получать нулевое значение, поэтому я добавил второй сканер, когда все, что мне нужно было сделать, это сохранить свои значения! Спасибо!
пожалуйста, добавьте языковой тег (java?)