gpt4 book ai didi

java - 输入多行时仅考虑最后一行

转载 作者:行者123 更新时间:2023-12-02 07:18:46 25 4
gpt4 key购买 nike

我试图立即向该程序输入一些测试用例,它只是继续输出最后一个输入的结果,而没有剩余的输入

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;


public class BeautifulStrings2 {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//File f=new File("input.txt");
Scanner in=new Scanner(System.in);
BufferedReader in1=new BufferedReader(new InputStreamReader(System.in));
int n=in.nextInt();
for (int i=1;i<=n;i++){
String s=in1.readLine();
System.out.println(s);
String chars="";
if (Character.isUpperCase(s.charAt(0))){
chars+=s.charAt(0);
}
else {
chars+=Character.toUpperCase(s.charAt(0));
}
for (int j=0;j<s.length();j++){
boolean flag=true;
for (int k=0;k<chars.length();k++){
if (Character.isLetter(s.charAt(j))){
if (chars.charAt(k)==Character.toUpperCase(s.charAt(j))){
flag=false;
break;
}
}
}
if (flag){
chars+=Character.toUpperCase(s.charAt(j));
}
}
String temp=chars;
chars="";
for (int j=0;j<temp.length();j++){
if (temp.charAt(j)>64&&temp.charAt(j)<91)
chars+=temp.charAt(j);
}
int [] numbers=new int[chars.length()];
Arrays.fill(numbers, 0);
for (int j=0;j<chars.length();j++){
for (int k=0;k<s.length();k++){
if (chars.charAt(j)==Character.toUpperCase(s.charAt(k))){
numbers[j]++;
}
}
}
Arrays.sort(numbers);
int factor=26,sum=0;
for (int j=chars.length()-1;j>=0;j--){
sum+=numbers[j]*factor;
factor--;
}
System.out.println("Case #"+i+": "+sum);
}
}

}

示例输入

5
ABbCcc
Good luck in the Facebook Hacker Cup this year!
Ignore punctuation, please :)
Sometimes test cases are hard to make up.
So I just go consult Professor Dalves

输出应该是什么

Case #1: 152
Case #2: 754
Case #3: 491
Case #4: 729
Case #5: 646

实际输出

Case #1: 646

编辑!现在我已经编辑了代码以仅使用 Scanner 对象并添加了 in.nextLine() 以跳过第一行

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;


public class BeautifulStrings2 {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//File f=new File("input.txt");
Scanner in=new Scanner(System.in);
//BufferedReader in1=new BufferedReader(new InputStreamReader(System.in));
int n=in.nextInt();
in.nextLine();
for (int i=1;i<=n;i++){
String s=in.nextLine();
System.out.println(s);
String chars="";
if (Character.isUpperCase(s.charAt(0))){
chars+=s.charAt(0);
}
else {
chars+=Character.toUpperCase(s.charAt(0));
}
for (int j=0;j<s.length();j++){
boolean flag=true;
for (int k=0;k<chars.length();k++){
if (Character.isLetter(s.charAt(j))){
if (chars.charAt(k)==Character.toUpperCase(s.charAt(j))){
flag=false;
break;
}
}
}
if (flag){
chars+=Character.toUpperCase(s.charAt(j));
}
}
String temp=chars;
chars="";
for (int j=0;j<temp.length();j++){
if (temp.charAt(j)>64&&temp.charAt(j)<91)
chars+=temp.charAt(j);
}
int [] numbers=new int[chars.length()];
Arrays.fill(numbers, 0);
for (int j=0;j<chars.length();j++){
for (int k=0;k<s.length();k++){
if (chars.charAt(j)==Character.toUpperCase(s.charAt(k))){
numbers[j]++;
}
}
}
System.out.println(chars);
Arrays.sort(numbers);
int factor=26,sum=0;
for (int j=chars.length()-1;j>=0;j--){
sum+=numbers[j]*factor;
factor--;
}
System.out.println("Case #"+i+": "+sum);
}
}

}

输出

Case #1: 152
Case #2: 754
Case #3: 491
Case #4: 729

按下回车键后,第五行出现

Case #5: 646

怎样才能让它出现而不需要按回车键?!

最佳答案

您正在两个不同的流读取器(一个是 Scanner,另一个是 BufferedReader)中两次使用标准输入流 System.in:

Scanner in=new Scanner(System.in);
BufferedReader in1=new BufferedReader(new InputStreamReader(System.in));

这看起来是一件非常危险的事情,而且容易出错。为什么不简单地使用 Scanner(或 BufferedReader)来处理所有事情呢?

如果您确实对所有内容都使用扫描仪,那么是的,如果下一个标记位于下一行,请在 nextInt() 之后使用 nextLine()。如果使用扫描仪,您甚至不需要文件顶部的 5 数字,因为您会读取行,直到扫描仪的 hasNextLine() 返回 false。

关于java - 输入多行时仅考虑最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14543893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com