我想编写一个程序,因为它从用户那里获取输入字符串(例如bhas1234@gmail.com)并打印为bhas1234(在@之后留下字符)当我写下面的代码时它显示以下错误:
import java.util.*;
import java.util.Scanner;
public class Name {
public static void main(String[] args) {
Scanner take =new Scanner(System.in);
int j=0;
String[] sh;
String gmail;
for(j=0;sh[j]!="exit";j++)
{
sh[j]= take.nextLine();
int i=sh[j].indexOf('@');
gmail= sh[j].substring(0,i);
System.out.println(gmail);
}
}
}
它将错误显示为
线程中的异常" main" java.lang.Error:未解决的编译问题: 局部变量sh可能尚未初始化
答案 0 :(得分:2)
您必须初始化String
数组。
String[] sh = new String[numbefOfIndexes];
在Java中,在初始化之前无法使用数组。
请记住,即使你像我一样初始化它,默认值也是null
,因为它是一个对象数组,为了避免这种情况,你可以直接填充数组,如下所示
String[] sh = {"valueOne", "valueTwo"};
答案 1 :(得分:2)
基本上你想要
答案 2 :(得分:1)
在初始化之前使用sh [j]的for循环中出现错误。
您应该更改代码以从用户获取输入并仅检查字符串而不是字符串数组。我只根据你的代码给出解决方案。将您的代码更新为:
Scanner take =new Scanner(System.in);
int j=0;
String sh;
String gmail;
while(!(sh = take.nextLine()).equals("exit"))
{
int i=sh.indexOf('@');
gmail= sh.substring(0,i);
System.out.println(gmail);
}