为什么我的数组解析为int但我将其声明为数组?

时间:2015-11-21 03:38:20

标签: java arrays

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

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

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

在第13行,我收到错误 The type of expression must be an array but is resolved to an 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);     
}
}

5 个答案:

答案 0 :(得分:0)

  int serienNummer = scanner.nextInt();
  int[] landkennung = serienNummer[0] - 'A' + 1;

您已将serienNummer声明为int,并且您尝试将其用作数组serienNummer[0],而landkennung是数组引用,你为它分配一个值。

答案 1 :(得分:0)

问题在于int [] landkennung = serienNummer [0] - &#39; A&#39; + 1;

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

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

如果landkennung不是int [],landkennung / 10也会起作用。

简而言之,有很多数组int mixup需要修复。

答案 2 :(得分:0)

  
    

问题在于int [] landkennung = serienNummer [0] - 'A'+ 1;

  
     

您将landkennung声明为int [],但尝试将其分配给   一个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);
        }
    }

在这里,我解决了一些基本问题并评论了我所做的改变。

答案 3 :(得分:0)

问题是您尝试将整数用作数组。代码中的第一个问题是:

int serienNummer = scanner.nextInt();

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

答案 4 :(得分:-1)

我认为您没有正确使用扫描仪类。你需要使用程序中的以下几点来获取整数参数数组,如下所述。

1)你需要像while(scanner.hasNextInt())那样使用while循环来从扫描器中获取多个int值。

2)你将在循环中从扫描仪内部获得单个int,因此你需要在代码中使用普通的int而不是数组。

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

而不是使用

int landkennung = serienNummer - 'A' + 1;

希望这会对你有所帮助