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