Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的数组解析为int,而我将它声明为数组?_Java_Arrays - Fatal编程技术网

Java 为什么我的数组解析为int,而我将它声明为数组?

Java 为什么我的数组解析为int,而我将它声明为数组?,java,arrays,Java,Arrays,我一直在尝试编写一个程序,根据特定的公式(在for循环中)计算序列号的验证号 序列号以字母表中的字母开头,必须根据其在字母表中的位置转换为数字(例如:a=1,Z=26) 为了做到这一点,我想我需要使用数组和/或字符,但是我只知道这两个,不知道如何继续 在第13行,我得到了一个错误表达式的类型必须是数组,但被解析为int。为什么我会得到这个错误?我需要改变什么?我已经试着自己解决这个问题,并且已经阅读了大量关于这个主题的其他帖子,但我似乎无法解决。请,请帮帮我 我非常确信代码也可以被清理,因为我对

我一直在尝试编写一个程序,根据特定的公式(在for循环中)计算序列号的验证号

序列号以字母表中的字母开头,必须根据其在字母表中的位置转换为数字(例如:a=1,Z=26)

为了做到这一点,我想我需要使用数组和/或字符,但是我只知道这两个,不知道如何继续

在第13行,我得到了一个错误
表达式的类型必须是数组,但被解析为int
。为什么我会得到这个错误?我需要改变什么?我已经试着自己解决这个问题,并且已经阅读了大量关于这个主题的其他帖子,但我似乎无法解决。请,请帮帮我

我非常确信代码也可以被清理,因为我对编程非常陌生,只是了解了代码约定等等,所以我非常感谢任何关于如何改进代码的建议

import java.util.Scanner;
import java.lang.Math;

public class Pruefziffer {

public static void main(String[] args) {
    // TODO Auto-generated method stub

          Scanner scanner = new Scanner(System.in);
          System.out.println("Geben Sie die Seriennummer ein");
          int serienNummer = scanner.nextInt();

            int[] landkennung = serienNummer[0] - 'A' + 1;
            int quersumme = (landkennung % 10) + (landkennung / 10);
            int pruefziffer = 0;

            for (int i = 1; i <= 10; i++) {
                quersumme += serienNummer[i] - '0';

            }

            pruefziffer = 8 - quersumme % 9;

            if (pruefziffer == 0) {
                 pruefziffer = 9;
           }         
    System.out.println(pruefziffer);     
}
}
import java.util.Scanner;
导入java.lang.Math;
公共级普鲁夫齐弗{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
扫描仪=新的扫描仪(System.in);
System.out.println(“一个连续的字符串”);
int serienNummer=scanner.nextInt();
int[]landkennung=serienNummer[0]-“A”+1;
int querysumme=(landkenung%10)+(landkenung/10);
int-pruefziffer=0;
对于(int i=1;i

您已将
serienNummer
声明为
int
,并试图将其用作数组
serienNummer[0]
,而
landkenung
是数组引用,并为其指定了单个值。

问题在于int[]landkenung=serienNummer[0]-“a”+1

您将landkennung声明为int[],但尝试将其赋值为int

另一个问题是serienNummer是一个int,但您试图像访问数组一样访问它

此外,只有当landkennung不是int[]时,landkennung/10才会工作

简言之,有许多数组int混音需要修复


问题在于int[]landkennung=serienNummer[0]-“A”+1

您将landkennung声明为int[],但尝试将其指定为 整数的值

另一个问题是将数组用作整数

import java.util.Scanner;

    public class Pruefziffer {

        public static void main(String[] args) {
            // TODO Auto-generated method stub

            Scanner scanner = new Scanner(System.in);
            System.out.println("Geben Sie die Seriennummer ein");
            int serienNummer = scanner.nextInt();

            int[] landkennung = new int[10];// Here you try to assign a int 
// where it is an array 
            landkennung[0] =serienNummer - 'A' + 1;
            int quersumme = (landkennung[0] % 10) + (landkennung[0] / 10);// // Here you try to acces array as an integer like `landkennung`
            int pruefziffer = 0;

            for (int i = 1; i <= 10; i++) {
                quersumme += serienNummer - '0';

            }

            pruefziffer = 8 - quersumme % 9;

            if (pruefziffer == 0) {
                pruefziffer = 9;
            }
            System.out.println(pruefziffer);
        }
    }
import java.util.Scanner;
公共级普鲁夫齐弗{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
扫描仪=新的扫描仪(System.in);
System.out.println(“一个连续的字符串”);
int serienNummer=scanner.nextInt();
int[]landkennung=new int[10];//这里您尝试分配一个int
//其中它是一个数组
landkennung[0]=序列号-A'+1;
int querysumme=(landkennung[0]%10)+(landkennung[0]/10);///这里您尝试将数组作为类似于'landkennung'的整数进行访问`
int-pruefziffer=0;

对于(int i=1;i而言,问题在于您试图使用整数作为数组。代码中的第一个问题是:

int serienNummer = scanner.nextInt();

            int[] landkennung = serienNummer[0] - 'A' + 1;

我认为您没有正确使用scanner类。您需要在程序中使用下面的点来获取整数参数数组,如下所述

1) 您需要使用while循环,比如
while(scanner.hasnetint())
从scanner获取int的多个值

2) 您将在while循环中从扫描器中获得单个int,所以您需要在代码中使用普通int而不是数组

int[] landkennung = serienNummer[0] - 'A' + 1;
代替使用

int landkennung = serienNummer - 'A' + 1;

希望这将帮助您

这是什么
querysumme+=serienNummer[i]-“0”;
`int[]landkennung=serienNummer[0]-“A”+1;`您声明了一个数组,但分配了一个整数
serienNummer
是一个
int
,但您试图通过数组订阅
serienNummer[0]访问它
。另外:
Scanner.nextInt()
不起作用,因为序列号应该以字母开头(
char
),不是一个
int
。我想你应该先读一下如何声明一个数组以及如何遍历一个数组?是的,我也这么想,我该如何更改扫描仪来读取一个字母及其后面的数字?我到底在哪里尝试给它赋值?我应该使用int还是int[]?如果我使用int[],我如何进行除法?抱歉,如果这看起来很愚蠢,我对这很陌生,只是想弄清楚。您的代码有太多错误,我无法开始解释它的用途。请使用int[]如果你需要一个整数数组。如果你只需要一个整数,就使用一个整数。无论你如何正确地使用它。我不是一个读心术的人。我怎么能纠正这个问题?我甚至需要数组吗?给它赋值吗?谢谢你,我感谢你的帮助!!我仍然不确定我到底应该改成什么,我复制了你修改过的代码,并得到了答案“线程”main“java.util.InputMismatchException”错误中的异常。该错误是与我的公式有关,还是仍然与int和数组有关?我想您可以在`int serienNummer=scanner.nextInt()中输入一些字符值;`仅适用于整数值,但扫描仪需要能够读取这样的'U1234567890',对如何解决此问题有何建议?我很抱歉所有的问题,您应该使用
String
type我已更改了代码,但我现在遇到了此错误:运算符类型-未定义字符串,char。我为什么会遇到此错误?我如何解决它?我很抱歉我已经编辑了你上面的代码,使之符合我现在的情况。
int landkennung = serienNummer - 'A' + 1;