Java вывод разных номеров строк для каждого вывода - PullRequest
0 голосов
/ 06 августа 2020

У меня есть этот код, который выводит максимальное значение каждой имеющейся у меня строки. Но у меня также возникают проблемы с распечаткой номера строки для каждого вывода. Я попытался использовать i, чтобы добавить 1 к каждой строке. Очевидно, это не сработает, просто хотел показать свою попытку. Без i код отлично работает для поиска максимального значения моей строки из текстового файла. Если есть другой способ изменить номер строки для каждого вывода, это будет очень полезно. Например,

Row 1: 5
Row 2: 67
row 3: 43

- это то, что я хочу. Все, что я смог получить, это:

Row 1: 5
Row 1: 67
row 1: 43

Мой java код

import java.util.Scanner;
public class maxValue {

    public static void main(String[] args) throws Exception {
            int i=0;i<3;i++;
            String fileName="C:\\Users\\Michael\\Documents\\input.csv";
            File f = new File(fileName);
            Scanner fileScan= new Scanner(f);
            while(fileScan.hasNext()) {
                 String line=fileScan.nextLine();
                 System.out.println("ROW " + i + ": " + (extractMaximum(line)));
                 
                
            }
            
            fileScan.close();
           

    }
     static int extractMaximum(String str) { 
            int num = 0; 
            int res = 0; 
           
            // Start traversing the given string 
            for (int i = 0; i<str.length(); i++) { 
                // If a numeric value comes, start converting 
                // it into an integer till there are consecutive 
                // numeric digits 
                if (Character.isDigit(str.charAt(i))) 
                    num = num * 10 + (str.charAt(i)-'0'); 
           
                // Update maximum value 
                else { 
                    res = Math.max(res, num); 
           
                    // Reset the number 
                    num = 0; 
                } 
            } 
           
            // Return maximum value 
            return Math.max(res, num); 
        } 

}

1 Ответ

1 голос
/ 06 августа 2020

Вам нужно увеличить i в l oop:

public static void main(String[] args) throws Exception
{
    String fileName="C:\\Users\\Michael\\Documents\\input.csv";
    File f = new File(fileName);
    Scanner fileScan = new Scanner(f);

    // One option: a for loop
    for (int i = 1; fileScan.hasNext(); i++) {
        String line = fileScan.nextLine();
        // I prefer printf
        System.out.printf("ROW %d: %d%n", i, extractMaximum(line));
    }
    fileScan.close();
}

// Re-written to use streams
// Even if you don't want to use stream,
// Using the regex to split the string is an improvement
static int extractMaximum(String str)
{
     return Arrays.stream(str.split("\\D+"))
                    .map(x -> Integer.parseInt(x))
                    .max(Integer::compare)
                    .get();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...