【问题标题】:Java Scanner does't read last StringJava 扫描器不读取最后一个字符串
【发布时间】:2022-11-27 16:36:15
【问题描述】:

我必须在 Java 8 中执行以下操作:

给定一个由小写拉丁字母组成的字符串。需要判断字符串中是否出现这样的字母,如果将其去掉,则得到的字符串(长度减一)将成为回文。需要删除的这个词的打印索引。

但如果原字符串已经是回文,则需要输出-1

第一行包含一个整数T,测试次数。接下来的每一行 T 都包含一系列小的拉丁字母。

所以我这样做了:

import java.io.*;
import java.util.*;
public class Kurs {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        int size = sc.nextInt();
        System.out.println();
        for (int i = 0; i < size; i++) {
            String s = sc.next();
            String s_reversed = new StringBuilder(s).reverse().toString();
            System.out.println(s);
            System.out.println(s_reversed);
            if(s.equals(s_reversed)){
                System.out.println(-1);
                continue;
            }

            StringBuilder curr = new StringBuilder();

            loops:
            for (int j = 0; j < s.length(); j++) {
                for (int k = 0; k < s.length(); k++) {
                    if (k == j) continue;

                    curr.append(s.charAt(k));
                    System.out.println("current: " + curr);
                }
                if(curr.toString().equals(curr.reverse().toString())){
                    System.out.println("polindrome--> "+curr.toString());
                    System.out.println("index "+j);
                    System.out.println();
                  break loops;
                }
                curr.delete(0,curr.length());
                System.out.println();
            }

        }
    }
}

有了这个输入:

3
aaab
baa
aaa

我得到这个输出:

aaab
baaa
current: a
current: aa
current: aab

current: a
current: aa
current: aab

current: a
current: aa
current: aab

current: a
current: aa
current: aaa
polindrome--> aaa
index 3

baa
aab
current: a
current: aa
polindrome--> aa
index 0

这是预期的输出:

aaa
aaa
-1

如标题所述:Scanner 不想读我最后的字符串 aaa
如果不读取它,则不会打印“-1”。

所以基本上,我的问题是:如何让这个扫描仪读取最后一个字符串 aaa

【问题讨论】:

    标签: java loops printing java-8 java.util.scanner


    【解决方案1】:

    尝试使用 BufferedReader 类而不是扫描仪。扫描仪只扫描到下一个 或空格 " " 而 BufferedReader 将读取一整行。

    【讨论】:

      猜你喜欢
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      相关资源
      最近更新 更多