J'ai un fichier texte ci-dessous:
et je veux résumer chacune des marchandises
La sortie doit ressembler à: p> J'écris uniquement un seul code ci-dessous et je suis bloqué: P> stylo 100
Encre 50
Stylo 150
Papier 20 code> p>
public static void readData(){
File infile = new File("D:\\itemData.txt");
String itemName = new String();
String[] nameList = new String[100];
String[] saleList = new String[100];
int sale;
int count =0;
try {
Scanner data = new Scanner(infile);
while (data.hasNext()) {
itemName = data.next();
sale = data.nextInt();
nameList[count] = name;
saleList[count] = String.valueOf(sale);
count++;
for (int i = 0; i < nameList.length; i++) {
if (nameList[i] != null) {
System.out.println(nameList[i] + " " + saleList[i]);
}
}
data.close();
}
} catch (IOException e) {
}}
3 Réponses :
Essayez le code ci-dessous.
Il y avait 2 problèmes dans le code que je pouvais voir.
a) Vous n'avez pas déclaré la variable compte code>
b) Vous imprimiez lors de la lecture des données et que cela n'est pas souhaitable.
public static void readData(){
File infile = new File("D:\\itemData.txt");
String itemName = new String();
String[] nameList = new String[100];
String[] saleList = new String[100];
int sale;
int count = 0;
try {
Scanner data = new Scanner(infile);
while (data.hasNext()) {
itemName = data.next();
sale = data.nextInt();
nameList[count] = name;
saleList[count] = String.valueOf(sale);
count++;
data.close();
}
} catch (SIOException e) {
}
for (int i = 0; i < nameList.length; i++) {
if (nameList[i] != null) {
System.out.println(nameList[i] + " " + saleList[i]);
}
}
}
Envisagez également de mettre en œuvre quelque chose comme celui-ci pour garder une trace de maxes et des mins pour vous:
package com.example.demo; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; import org.apache.commons.collections4.map.HashedMap; public class Inventory { private Map<String, AtomicInteger> totals = new HashedMap<>(); private Map<String, AtomicInteger> maxes = new HashedMap<>(); private Map<String, AtomicInteger> mins = new HashedMap<>(); public void add(String name, int number) { getOrCreateFromMap(totals, name, 0).addAndGet(number); getOrCreateFromMap(maxes, name, Integer.MIN_VALUE).getAndUpdate(present -> (present < number) ? number : present); getOrCreateFromMap(mins, name, Integer.MAX_VALUE).getAndUpdate(present -> (number < present) ? number : present); } private AtomicInteger getOrCreateFromMap(Map<String, AtomicInteger> map, String name, int initialValue) { return map.computeIfAbsent(name, x -> new AtomicInteger(initialValue)); } public int getTotal(String name) { return getFromMap(totals, name); } public int getMax(String name) { return getFromMap(maxes, name); } public int getMin(String name) { return getFromMap(mins, name); } private int getFromMap(Map<String, AtomicInteger> map, String key) { return map.computeIfAbsent(key, x -> new AtomicInteger()) .get(); } public static void main(String[] args) { Inventory i = new Inventory(); i.add("paper", 50); i.add("paper", 150); System.out.println(i.getTotal("paper")); System.out.println(i.getMax("paper")); System.out.println(i.getMin("paper")); } }
Voici un exemple de travail, pour l'instruction problématique mentionnée -
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Map; import java.util.stream.Collectors; public class ReadAndSumFileData { public static void main(String... arguments) throws IOException { String filename = "C:/temp/SalesData.txt"; readData(filename); } private static void readData(String filename) throws IOException { Map<String, Integer> map = Files.lines(Paths.get(filename)) .map(s -> s.split("\\s+")) .collect(Collectors.groupingBy(a -> a[0], Collectors.summingInt(a -> Integer.parseInt(a[1])))); map.entrySet().stream().forEach(e-> System.out.println(e)); } }
Que voulez-vous dire par coincé i>? Qu'est-ce qui ne fonctionne pas? Veuillez jeter un coup d'œil sur le centre centre d'aide . En particulier Comment puis-je poser une bonne question? citez toujours l'erreur exacte, plutôt que de simplement dire que vous obtenez une erreur .
Jetez un coup d'œil à HASHMAP .