I am new to java programming. I tried hello world program, but I got an error «not a statement«. Whereas when I copy, paste the hello world program from the internet, my program compiled. This is the program I used. What is meant by «not a statement«, please explain why I got this error and what is meant by it and what should I look for when I get this error in the future. Thanks!
public class hello
{
public static void main(String args[]) {
System.out.println(“hello world”);
}
}
My errors:-
hello.java:8: error: illegal character: 'u201c'
System.out.println(“hello world”);
^
hello.java:8: error: ';' expected
System.out.println(“hello world”);
^
hello.java:8: error: illegal character: 'u201d'
System.out.println(“hello world”);
^
hello.java:8: error: not a statement
System.out.println(“hello world”);
^
4 errors
Shar1er80
8,9912 gold badges20 silver badges28 bronze badges
asked Jul 6, 2018 at 15:38
3
You code cannot contain smart quotes like your used in your «Hello World». I replaced your smart/fancy quotes with the correct kind.
public class hello
{
public static void main(String args[]) {
System.out.println("hello world");
}
}
answered Jul 6, 2018 at 15:47
Matthew S.Matthew S.
3111 gold badge9 silver badges22 bronze badges
import java.util.Scanner;
public class FloydTriangle {
public static void main(String[] args){
int range, i, j, k=1;
Scanner scan = new Scanner(System.in);
System.out.println("Enter the num of rows: ");
range=scan.nextInt();
System.out.println("Floyd's Triangle :n");
for(i=1; i<=range; i++)
{
for(j=1, j<=i; j++; k++)
{
System.out.println(k + " ");
}
System.out.println();
}
}
}
Следующий код при компиляции выдает ошибку: Error:(15, 23) java: not a statement в этой строке: for(j=1, j<=i; j++; k++)
задан 5 фев 2018 в 19:17
1
Первый for написали правильно, а второй нет. Вместо ,
нужно ;
.
for(j=1; j<=i; j++, k++)
{
System.out.println(k + " ");
}
ответ дан 5 фев 2018 в 19:21
TsyklopTsyklop
3,8474 золотых знака23 серебряных знака53 бронзовых знака
2
Автор оригинала: Kai Yuan.
1. Обзор
“Незаконное начало выражения”-это распространенная ошибка, с которой мы можем столкнуться во время компиляции.
В этом уроке мы рассмотрим примеры, иллюстрирующие основные причины этой ошибки и способы ее устранения.
2. Отсутствующие Фигурные Скобки
Отсутствие фигурных скобок может привести к ошибке “незаконное начало выражения”. Давайте сначала рассмотрим пример:
package com.baeldung; public class MissingCurlyBraces { public void printSum(int x, int y) { System.out.println("Calculation Result:" + calcSum(x, y)); public int calcSum(int x, int y) { return x + y; } }
Если мы скомпилируем вышеуказанный класс:
$ javac MissingCurlyBraces.java MissingCurlyBraces.java:7: error: illegal start of expression public int calcSum(int x, int y) { ^ MissingCurlyBraces.java:7: error: ';' expected public int calcSum(int x, int y) { .....
Отсутствие закрывающей фигурной скобки print Sum() является основной причиной проблемы.
Решение проблемы простое — добавление закрывающей фигурной скобки в метод printSum() :
package com.baeldung; public class MissingCurlyBraces { public void printSum(int x, int y) { System.out.println("Calculation Result:" + calcSum(x, y)); } public int calcSum(int x, int y) { return x + y; } }
Прежде чем перейти к следующему разделу, давайте рассмотрим ошибку компилятора.
Компилятор сообщает, что 7-я строка вызывает ошибку “незаконное начало выражения”. На самом деле, мы знаем, что первопричина проблемы находится в 6-й строке. Из этого примера мы узнаем, что иногда ошибки компилятора не указывают на строку с основной причиной , и нам нужно будет исправить синтаксис в предыдущей строке.
3. Модификатор Доступа Внутри Метода
В Java мы можем объявлять локальные переменные только внутри метода или конструктора . Мы не можем использовать модификатор доступа для локальных переменных внутри метода, поскольку их доступность определяется областью действия метода.
Если мы нарушим правило и у нас будут модификаторы доступа внутри метода, возникнет ошибка “незаконное начало выражения”.
Давайте посмотрим на это в действии:
package com.baeldung; public class AccessModifierInMethod { public void printSum(int x, int y) { private int sum = x + y; System.out.println("Calculation Result:" + sum); } }
Если мы попытаемся скомпилировать приведенный выше код, мы увидим ошибку компиляции:
$ javac AccessModifierInMethod.java AccessModifierInMethod.java:5: error: illegal start of expression private int sum = x + y; ^ 1 error
Удаление модификатора private access легко решает проблему:
package com.baeldung; public class AccessModifierInMethod { public void printSum(int x, int y) { int sum = x + y; System.out.println("Calculation Result:" + sum); } }
4. Вложенные методы
Некоторые языки программирования, такие как Python, поддерживают вложенные методы. Но, Java не поддерживает метод внутри другого метода.
Мы столкнемся с ошибкой компилятора “незаконное начало выражения”, если создадим вложенные методы:
package com.baeldung; public class NestedMethod { public void printSum(int x, int y) { System.out.println("Calculation Result:" + calcSum(x, y)); public int calcSum ( int x, int y) { return x + y; } } }
Давайте скомпилируем приведенный выше исходный файл и посмотрим, что сообщает компилятор Java:
$ javac NestedMethod.java NestedMethod.java:6: error: illegal start of expression public int calcSum ( int x, int y) { ^ NestedMethod.java:6: error: ';' expected public int calcSum ( int x, int y) { ^ NestedMethod.java:6: error: expected public int calcSum ( int x, int y) { ^ NestedMethod.java:6: error: not a statement public int calcSum ( int x, int y) { ^ NestedMethod.java:6: error: ';' expected public int calcSum ( int x, int y) { ^ 5 errors
Компилятор Java сообщает о пяти ошибках компиляции. В некоторых случаях одна ошибка может привести к нескольким дальнейшим ошибкам во время компиляции.
Выявление первопричины имеет важное значение для того, чтобы мы могли решить эту проблему. В этом примере первопричиной является первая ошибка “незаконное начало выражения”.
Мы можем быстро решить эту проблему, переместив метод calcSum() из метода print Sum() :
package com.baeldung; public class NestedMethod { public void printSum(int x, int y) { System.out.println("Calculation Result:" + calcSum(x, y)); } public int calcSum ( int x, int y) { return x + y; } }
5. символ или строка Без кавычек
Мы знаем, что String литералы должны быть заключены в двойные кавычки, в то время как char значения должны быть заключены в одинарные кавычки.
Если мы забудем заключить их в соответствующие кавычки, компилятор Java будет рассматривать их как имена переменных .
Мы можем увидеть ошибку “не удается найти символ”, если “переменная” не объявлена.
Однако если мы забудем дважды заключить в кавычки Строку , которая не является допустимым именем переменной Java , компилятор Java сообщит об ошибке “незаконное начало выражения” .
Давайте посмотрим на это на примере:
package com.baeldung; public class ForgetQuoting { public int calcSumOnly(int x, int y, String operation) { if (operation.equals(+)) { return x + y; } throw new UnsupportedOperationException("operation is not supported:" + operation); } }
Мы забыли процитировать строку |//+ внутри вызова метода equals , и + , очевидно, не является допустимым именем переменной Java.
Теперь давайте попробуем его скомпилировать:
$ javac ForgetQuoting.java ForgetQuoting.java:5: error: illegal start of expression if (operation.equals(+)) { ^ 1 error
Решение проблемы простое — обертывание String литералов в двойные кавычки:
package com.baeldung; public class ForgetQuoting { public int calcSumOnly(int x, int y, String operation) { if (operation.equals("+")) { return x + y; } throw new UnsupportedOperationException("operation is not supported:" + operation); } }
6. Заключение
В этой короткой статье мы рассказали о пяти различных сценариях, которые приведут к ошибке “незаконное начало выражения”.
В большинстве случаев при разработке приложений Java мы будем использовать среду IDE, которая предупреждает нас об обнаружении ошибок. Эти замечательные функции IDE могут значительно защитить нас от этой ошибки.
Тем не менее, мы все еще можем время от времени сталкиваться с этой ошибкой. Поэтому хорошее понимание ошибки поможет нам быстро найти и исправить ошибку.
String text = "Vova", myText = "Vova";
System.out.print(text.equals(myText) ? "Переменные схожи" : "Переменные различаются");
Тернарный оператор
?:
в Java единственный оператор, который принимает три операнды.
логическоеВыржанеие ? выражение1: выражение2
Первый операнд должен быть логическим выражением. Второй и третий операнды — любым выражением, которое возвращает любое значение.
System.out.print()
ничего не возвращает, поэтому и была ошибка.
Операнд — элемент данных, над которым производятся машинные операции.
нот а стэйтмент
com/javarush/task/task06/task0606/Solution.java:16: error: not a statement
for (int x = integer.parseInt(reader.readLine()); x/10!=0; x/10 )
Не нравится валидатору x/10
Что не так?
package com.javarush.task.task06.task0606;
import java.io.*;
/*
Чётные и нечётные циферки
*/
public class Solution {
public static int even;
public static int odd;
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); //напишите тут ваш код
for (int x = integer.parseInt(reader.readLine()); x/10!=0; x/10 )
{
if (x%2=0)
even++;
else
odd++;
}
System.out.println(«Even: «+even+» Odd: «+odd);
}
}
Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.