我的项目的文本文件中有一系列单词。我试图区分大写字母和文件,只打印出它能找到的最大数字。例如输入: 滚动卷 和我的输出:2 R
我认为有代码可以找到最大数量或者其他东西,但我现在已经迷失了。
这是我到目前为止的代码:
import java.io.*;
import java.util.Scanner;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class letters {
public static void main(String[] args) throws FileNotFoundException {
FileInputStream fis = new FileInputStream("input.txt");
Scanner scanner = new Scanner(fis);
String str = scanner.nextLine();
System.out.println(str);
int upperCaseCounter = 0;
int upperCase[] = new int[26];
while (scanner.hasNextLine()) {
String s = scanner.nextLine();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (Character.isAlphabetic(ch)) {
if (Character.isUpperCase(ch)) {
upperCase[ch - 'A']++;
System.out.println(ch + " : " + upperCase[ch - 'A']);
}
}
}
}
}
}
我的输出给了我一些东西:
R : 10
O : 6
L : 7
L : 8
R : 11
T : 5
R : 12
我只需要打印R:12
你是怎么做到这一点的。任何帮助将不胜感激。谢谢! 我是这个网站上的缩进新手,并试图快速...
答案 0 :(得分:4)
您可以使用Arrays#sort方法查找数组中的最大值或最小值。
Arrays.sort(upperCase);
int maxIndex = upperCase.length-1;
System.out.println("Max element is:"+(char)upperCase[maxIndex])+":"+upperCase[maxIndex]);
sort()
方法按升序对数组进行排序。然后数组的第一个元素为min
个数字,数组的最后一个元素为max
。
注意:上面的代码应该在while循环之后,这样它只打印一次而不是像你的情况那样多次打印。
答案 1 :(得分:1)
或者,您可以在for循环中计算最大值。请运行我的代码。
public static void main(String[] args) throws FileNotFoundException {
FileInputStream fis = new FileInputStream("input.txt");
Scanner scanner = new Scanner(fis);
String str = scanner.nextLine();
System.out.println(str);
int upperCaseCounter = 0;
int upperCase[] = new int[26];
int max=0;
char let='A';
while (scanner.hasNextLine()) {
String s = scanner.nextLine();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (Character.isAlphabetic(ch)) {
if (Character.isUpperCase(ch)) {
upperCase[ch - 'A']++;
// System.out.println(ch + " : " + upperCase[ch - 'A']);
if(max<upperCase[ch - 'A']){
max=upperCase[ch - 'A'];
let=ch;
}
}
}
}
}
System.out.println(let+" "+max);
}
}
答案 2 :(得分:0)
在角色增加后,您可以在while循环中使用变量,例如MaxVal。然后使用if语句将新分配的递增值(upperCase [ch-'A'])与变量MaxVal进行比较。如果它大于MaxVal,则为MaxVal赋值upperCase [ch-'A']的值
您可能会将MaxVal设为二维数组来保存字符及其当前计数
古德勒克!
答案 3 :(得分:0)
你需要保留两个局部变量int temp和char ch1来跟踪你的最大长度和相应的校正器。在这里我给出修改后的代码。 package com.mindtree.programs;
import java.util.Arrays; import java.util.Scanner;
import java.io.FileInputStream; import java.io.FileNotFoundException;
公共类ReadScacnner {
public static void main(String[] args) throws FileNotFoundException {
FileInputStream fis = new FileInputStream("input.txt");
Scanner scanner = new Scanner(fis);
int upperCase[] = new int[26];
int temp = 0;
char ch1 = 0;
while (scanner.hasNextLine()) {
String s = scanner.nextLine();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (Character.isLetter(ch)) {
if (Character.isUpperCase(ch)) {
upperCase[ch - 'A']++;
if (temp < upperCase[ch - 'A']) {
ch1 = ch;
temp = upperCase[ch - 'A'];
}
}
}
}
}
Arrays.sort(upperCase);
System.out.println("Max element is:" + ch1 + " : "
+ upperCase[upperCase.length - 1]);
}
}