Java 如何检查字符串数组上的字符值?
我被要求编写一个Java程序,从用户那里获取5个字符串并将其收集到一个数组中。此外,我需要检查数组中的每一个字符串,只打印超过四个字符的字符串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];
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]);
}
}
}