我正在尝试创建一个程序,它允许我输入10个字符并将它们存储在一个数组中。 只有单个字符就足够了,例如(d,s,a,e,h,j,e,)......然后让我使用线性搜索算法查找其中一个字符并给出数组中的位置。
我试过编程但我只能用整数来做。 到目前为止,这是我的代码。
我不知道如何将其更改为字母/字符?
public static void main(String args[])
int c, n, search, array[];
Scanner in = new Scanner(System.in);
System.out.println("Enter number of elements");
n = in.nextInt();
array = new int[n];
System.out.println("Enter " + n + " Letters");
for (c = 0; c < n; c++)
array[c] = in.nextInt();
System.out.println("What letter do you want to find?");
search = in.nextInt();
for (c = 0; c < n; c++)
{
if (array[c] == search) /* Searching element is present */
{
System.out.println(search + " is present at location " + (c + 1) + ".");
break;
}
if (c == n) /* Searching element is absent */
System.out.println(search + " Letter is not found.");
答案 0 :(得分:4)
我尝试编程但我只能用整数
来编程
不,如果您使用in.next().charAt(0)
而不是in.nextInt()
类Scanner
来获取第一个Character
表单String
,则可以执行此操作。
我不知道如何将其更改为字母/字符?
这里你不需要更改它,或者某些regex
或split
,方法in.next()
从输入中获取String(最终用途),然后获取charAt(0)
第一个。
现在,我在您的代码中更改了上面提到的工作:
search
和array[]
更改为char
数据类型。array[]
的声明更改为array = new char[n]
search
和array
的输入更改为in.next().charAt(0)
。试试这个:
public static void main(String args[]) {
int n,c;
char search,array[];
Scanner in = new Scanner(System.in);
System.out.println("Enter number of elements");
n = in.nextInt();
array = new char[n];
System.out.println("Enter " + n + " Letters");
for ( c = 0; c < n; c++) {
array[c] = in.next().charAt(0);
}
System.out.println("What letter do you want to find?");
search = in.next().charAt(0);
for ( c = 0; c < n; c++) {
if (array[c] == search) /* Searching element is present */ {
System.out.println(search + " is present at location " + (c + 1) + ".");
break;
}
if (c == n) /* Searching element is absent */ {
System.out.println(search + " Letter is not found.");
}
}
}
答案 1 :(得分:0)
问题在于您的第array[c] = in.nextInt();
行。 nextInt() method
的Scanner class可以读取整数,只读取整数。
您可以尝试使用array[c] = in.nextLine().charAt(0);
,它将从控制台获取任何输入,将其临时存储为String,获取该String的第一个字符,然后存储该字符串。您需要对第二个in.nextInt()
执行相同操作。
顺便说一句,将char
存储在int
中通常是不好的做法,即使它是有效的Java。例如,我会将c
和search
更改为char
,并将array
更改为char[]
。
答案 2 :(得分:0)
这是一种更简单的方法,使用Java的内置功能:
final Scanner in = new Scanner(System.in);
System.out.println("Please enter a series of characters:");
final String input = in.next();
System.out.println("What do you want to find?");
final String search = in.next();
int pos = input.indexOf(search);
if (pos < 0) {
System.out.println("No match.");
} else {
while (pos >= 0) {
System.out.println("Found at location: " + pos);
pos = input.indexOf(search, pos + 1);
}
}
的差异:
只扫描实际字符,因为输入的长度定义了用户实际想要输入的字符数。
indexOf()方法与您的函数大致相同,但它更快更容易(因为您实际上并不需要对其进行编码)。
这允许用户扫描多个char。如果那不是我想要的,我将由你来决定如何改变它。 ;)