我一直在尝试编写一个程序,根据某个公式计算序列号的验证号(在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);
}
}
答案 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;
希望这会对你有所帮助