Java,需要帮助从数组中打印字符串

标签 java arrays string printing

当我尝试在第一个开关中打印“Prim 对象”(如情况 1)时,我收到如下所示的打印错误:

Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.String
            at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302)
            at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2793)
            at java.util.Formatter$FormatSpecifier.print(Formatter.java:2747)
            at java.util.Formatter.format(Formatter.java:2520)
            at java.util.Formatter.format(Formatter.java:2455)
            at java.lang.String.format(String.java:2927)
            at dn09$Tip.toString(dn09.java:82)
            at java.lang.String.valueOf(String.java:2981)
            at java.io.PrintStream.println(PrintStream.java:821)
            at dn09.izpisi(dn09.java:32)
            at dn09.main(dn09.java:19)

我根本无法弄清楚出了什么问题,我想做的是将 Tipi 数组的 i 槽中的 Tip 作为字符串打印。我阅读和创作“Prim”的方式可能是错误的吗?或者是否有任何打印方法错误?如果我使用提示类中的 toString 方法,它也不会打印

这是我现在的整个程序:

    import java.util.*;
    public class dn09 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int B = sc.nextInt();
        Tip[] tipi = preberi(sc);
        int u = sc.nextInt();
        int[] ukazia = new int[u];
        int[] ukazid = new int[u];
        for (int i = 0; i < u; i++) {
            ukazia[i] = sc.nextInt();
            ukazid[i] = sc.nextInt();
        }
        for (int i = 0; i < u; i++) {
            switch(ukazia[i]) {
                case 1:
                    int vrstica = ukazid[i];
                    izpisi(vrstica-1, tipi);
                case 2:

                case 3:

            }

        }


    }

    private static void izpisi(int i, Tip[] tipi) {
        System.out.println(tipi[i]);
    }


    private static Tip[] preberi(Scanner sc) {
        int d = sc.nextInt();
        Tip[] tipi = new Tip[d];
        for (int i = 0; i < d; i++) {
            String tipPodatka = sc.next();
                switch (tipPodatka) {
                    case "prim":
                        tipi[i] = new Prim(sc.nextInt());
                        break;
                    case "arr":

                        break;
                    case "ostruct":
                        break;
                    case "pstruct":
                        break;
                }
        }
        return tipi;
    }




    private static class Prim extends Tip {
        protected int v;

        public Prim (int v) {
            this.v = v;
        }

        public String vrsta() {
            return "prim";
        }

        public String podatki() {
            return String.format("v = %d", this.v);
        }


    }

    private static abstract class Tip extends dn09 {
        public abstract String podatki();
        public abstract String vrsta();
        public String toString() {
            return String.format("%s%d", this.vrsta(), this.podatki());
        }
    }
}

最佳答案

将代码更改为:

return String.format("%s%s", this.vrsta(), this.podatki());

(两次 %s ,而不是 %s 然后 %d )

%d意味着你想打印一个数字,但是 this.podatki()返回一个与 %d 不兼容的字符串.

关于Java,需要帮助从数组中打印字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27888666/

相关文章:

java - 如何在执行长时间操作时关闭 Vaadin 8 确认对话框

arrays - Swift - 查找结构数组中的特定差异

java - 如何获取由原始字符串保留顺序的所有唯一字符组成的字符串?

php - 根据值扩展 2 个数组

php - 没有重复的随机数生成

c - 如何将字符串传递给链表而不是 C 中的字符数组?

c# - 清理 URL 中的外来字符/口音

java - JPA Criteria 多选与提取

Java时间戳转php时间戳

java - 如何在 Java 上使用 Sikuli 保存屏幕截图