Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查字符串数组上的字符值?_Java_Arrays_String_Loops - Fatal编程技术网

Java 如何检查字符串数组上的字符值?

Java 如何检查字符串数组上的字符值?,java,arrays,string,loops,Java,Arrays,String,Loops,我被要求编写一个Java程序,从用户那里获取5个字符串并将其收集到一个数组中。此外,我需要检查数组中的每一个字符串,只打印超过四个字符的字符串 public static void main(String[] args) { Scanner mbk = new Scanner(System.in); int repetition[] = { 1, 2, 3, 4, 5 }; String words[] = new String[repetition.length];

我被要求编写一个Java程序,从用户那里获取5个字符串并将其收集到一个数组中。此外,我需要检查数组中的每一个字符串,只打印超过四个字符的字符串

public static void main(String[] args) {
    Scanner mbk = new Scanner(System.in);
    int repetition[] = { 1, 2, 3, 4, 5 };
    String words[] = new String[repetition.length];
    for (int i = 0; i < words.length; i++) {
        System.out.println("Please enter element " + repetition[i] + ":");
        words[i] = mbk.nextLine();
    }
}
publicstaticvoidmain(字符串[]args){
扫描仪mbk=新扫描仪(System.in);
整数重复[]={1,2,3,4,5};
字符串字[]=新字符串[重复.长度];
for(int i=0;i
这是我写的代码,我被卡住了。有人能帮忙吗?

words[j]。length()
将提供数组索引
j
中字符串的长度。我让你们把它和4比较一下,然后引入一个变量
j
(你们可以再叫它
I
,或者你们觉得合适的任何其他名字)。

哟,我明白了:

这将遍历整个列表,并打印长度大于4的任何内容

for (int i = 0; i < yourArray.length; i++) {
    if (yourArray[i].length() > 4) {
         System.out.println(yourArray[i]);
    }
}
for(int i=0;i4){
System.out.println(yourray[i]);
}
}
使用
length()
方法

for(String s: words){
    if(s.length()>=4){
        System.out.println(s);
    }
 }

首先,使用变量名(如
mbk
)是一种非常糟糕的做法,任何其他阅读代码的开发人员都应该很容易理解变量名。它的名字应该反映它的目的。下面是对代码的一个小修改

另外,让I/O流保持打开状态会给您带来很大的麻烦,因此我还添加了
scanner.close
语句

public static void main(String[] args) throws Exception {
    Scanner userInput = new Scanner(System.in);
    int maxArrayLength[] = { 1, 2, 3, 4, 5 };
    String words[] = new String[maxArrayLength.length];
    for (int i = 0; i < words.length; i++) {
        System.out.println("Please enter element " + maxArrayLength[i] + ":");
            words[i] = userInput.nextLine();
        }

    for(int lengthCheckCounter = 0; lengthCheckCounter < words.length; lengthCheckCounter++)
        if(words[lengthCheckCounter].length() > 4)
            System.out.println(words[lengthCheckCounter] + "-" + words[lengthCheckCounter].length());
        userInput.close();
}
如果您使用的是
JDK 1.8
,您可以使用一行代码来完成Lonely Neuron评论中建议的所有操作:

// Initialize your words array here
// Take user input
// Print words greater than 4 using JDK 1.8 Filter below
Arrays.stream(words).filter(s -> s.length() > 4).forEach(System.out::println)
import java.util.Scanner;
公共类StackOf4{
公共静态void main(字符串[]args){
扫描仪scn=新扫描仪(System.in);
字符串[]名称=新字符串[5];

对于(int i=0;我被什么卡住了?有什么问题吗?你需要做另一个循环,一个
if
检查长度和另一个
系统。out.println
基本上你需要做更多你已经做过的事情。注意:你不需要一个数组来重复
欢迎这么做。整洁的代码,很好。我只有一个建议:我们已经离开了用奇怪的缩写来命名变量的时代。你的代码应该能立即被其他开发人员阅读。那么
mbk
是什么意思?也许你可以用一个表达性的名称来代替它?
Arrays.stream(words).filter(s->s.length()>4.forEach(System.out::println)
:o)非常感谢!再次感谢大家提醒我mbk的事情,这是我名字的首字母,所以我没有注意到你们的困难。我能够在我被卡住的地方完成代码。再次感谢你们的帮助!非常感谢!你们的代码解决了我需要解决的问题。@Mesut Berk Karataş完成了我的任务。@Mesut Berk KarataşI don’我没有回答这个问题,也没有回答我上面的问题?我先看到了你的评论,它很有效,我也尝试了上面的评论。啊,好的。很高兴能帮上忙。谢谢你,我终于完成了它!很高兴它帮了忙:)谢谢你的明智的帮助,我能完成代码。我会考虑你的建议在我的其他项目。乐意帮助:)<代码>扫描器。关闭()/代码>这里是错误的,因为你没有打开扫描仪。<代码> System。,并且关闭它不是您的责任。例如,如果您在文件上打开了扫描仪,则情况会有所不同。
// Initialize your words array here
// Take user input
// Print words greater than 4 using JDK 1.8 Filter below
Arrays.stream(words).filter(s -> s.length() > 4).forEach(System.out::println)
import java.util.Scanner;

public class StackOf4 {

    public static void main(String[] args) {

        Scanner scn=new Scanner(System.in);

        String[] names=new String[5];


        for(int i=0;i<5;i++) {


            System.out.println("Enter a string:");
            names[i]=scn.nextLine();

        }

        System.out.println("The strings with more than 4 characters are: ");

        for(int i=0;i<5;i++) {

            if(names[i].length()>4)
            System.out.println(names[i]);

        }


    }


}